#include <flexilog.h>
Public Member Functions | |
FlexiLog (wxTextCtrl *_textCtrl) | |
Class constructor. | |
virtual | ~FlexiLog () |
Class destructor. | |
void | SyncEveryMsg (bool enable=true) |
wxTextCtrl * | GetTextCtrl () const |
Get text control. | |
virtual void | DoLog (wxLogLevel level, const wxChar *msg, time_t timestamp) |
void | SetStatusText (const wxString &status) |
Set status text in log window. | |
void | LogMessage (const wxString &msg, wxLogLevel loglevel) |
Log message thread safe - adds log event to be processed later if not main thread. | |
Static Public Member Functions | |
static FlexiLog * | GetInstance () |
Get active log instance only if it is FlexiLog , NULL otherwise. | |
static void | LogMessageFlexi (const wxString &msg, wxLogLevel loglevel) |
Log message to active log target only if it is FlexiLog (using FlexiLog::LogMessage ). | |
static void | SetTextCtrlLogging (bool enable) |
Enable or disable logging to text control window. | |
Protected Attributes | |
wxTextCtrl * | textCtrl |
Text control window. | |
wxFileOutputStream * | dbgout |
Output file stream. | |
wxTextOutputStream * | dout |
Output text stream. | |
bool | logToTextCtrl |
Log to text control window? | |
bool | syncEveryMsg |
Sync log file after every log message? | |
Kernel * | kernel |
Auxiliary kernel instance pointer - eg. enables kernel access when logging from modules. | |
Friends | |
class | Kernel |
Definition at line 35 of file flexilog.h.
FlexiLog::FlexiLog | ( | wxTextCtrl * | _textCtrl | ) |
Class constructor.
Definition at line 22 of file flexilog.cpp.
00023 : wxLogTextCtrl(_textCtrl), 00024 textCtrl(_textCtrl), 00025 dbgout((wxFileOutputStream *)NULL), dout((wxTextOutputStream *)NULL) 00026 { 00027 syncEveryMsg = false; 00028 kernel = (Kernel *)NULL; 00029 SetLogLevel(wxLOG_Max); 00030 SetVerbose(true); 00031 logToTextCtrl = true; 00032 dbgout = new wxFileOutputStream(LOGFILE); 00033 if (dbgout && dbgout->IsOk()) 00034 dout = new wxTextOutputStream(*dbgout); 00035 else 00036 LogMessage(wxT("<FlexiLog>Logging to file disabled"), wxLOG_Warning); 00037 }
FlexiLog::~FlexiLog | ( | ) | [virtual] |
Class destructor.
Definition at line 40 of file flexilog.cpp.
00041 { 00042 SAFE_DELETE(dout); 00043 if (dbgout) 00044 dbgout->Close(); 00045 SAFE_DELETE(dbgout); 00046 }
FlexiLog * FlexiLog::GetInstance | ( | ) | [static] |
Get active log instance only if it is FlexiLog
, NULL
otherwise.
Definition at line 49 of file flexilog.cpp.
00050 { 00051 wxLog * logInst = wxLog::GetActiveTarget(); 00052 if (logInst) 00053 return dynamic_cast<FlexiLog *>(logInst); 00054 00055 return (FlexiLog *)NULL; 00056 }
void FlexiLog::LogMessageFlexi | ( | const wxString & | msg, | |
wxLogLevel | loglevel | |||
) | [static] |
Log message to active log target only if it is FlexiLog
(using FlexiLog::LogMessage
).
Definition at line 59 of file flexilog.cpp.
00060 { 00061 FlexiLog * logInst = GetInstance(); 00062 if (logInst) 00063 logInst->LogMessage(msg, loglevel); 00064 }
static void VRUT::FlexiLog::SetTextCtrlLogging | ( | bool | enable | ) | [inline, static] |
Enable or disable logging to text control window.
Definition at line 62 of file flexilog.h.
00063 { 00064 FlexiLog * logInst = GetInstance(); 00065 if (logInst) 00066 logInst->logToTextCtrl = enable; 00067 }
void VRUT::FlexiLog::SyncEveryMsg | ( | bool | enable = true |
) | [inline] |
wxTextCtrl* VRUT::FlexiLog::GetTextCtrl | ( | ) | const [inline] |
void FlexiLog::DoLog | ( | wxLogLevel | level, | |
const wxChar * | msg, | |||
time_t | timestamp | |||
) | [virtual] |
Log message - wxLogTextCtrl
overload
[in] | level | Message importance |
[in] | msg | Message to log |
[in] | timestamp | Time information |
Definition at line 67 of file flexilog.cpp.
00068 { 00069 if (dout) 00070 { 00071 wxString prep; 00072 TimeStamp(&prep); 00073 switch (level) 00074 { 00075 case wxLOG_FatalError: 00076 case wxLOG_Error: 00077 prep.Append(wxT("Error: ")); 00078 break; 00079 case wxLOG_Warning: 00080 prep.Append(wxT("Warning: ")); 00081 break; 00082 case wxLOG_Debug: 00083 prep.Append(wxT("Debug: ")); 00084 break; 00085 case wxLOG_Info: 00086 case wxLOG_Message: 00087 case wxLOG_Status: 00088 case wxLOG_Trace: 00089 case wxLOG_Progress: 00090 default: 00091 break; 00092 } 00093 *dout << prep << msg << wxT('\n'); 00094 if (syncEveryMsg) 00095 dbgout->Sync(); 00096 } 00097 00098 if (logToTextCtrl) 00099 { 00100 switch (level) 00101 { 00102 case wxLOG_FatalError: 00103 case wxLOG_Error: 00104 textCtrl->SetDefaultStyle(wxTextAttr(*wxRED)); 00105 break; 00106 case wxLOG_Warning: 00107 textCtrl->SetDefaultStyle(wxTextAttr(wxColour(128, 0, 0))); 00108 break; 00109 case wxLOG_Info: 00110 case wxLOG_Debug: 00111 case wxLOG_Trace: 00112 case wxLOG_Progress: 00113 textCtrl->SetDefaultStyle(wxTextAttr(wxColour(0, 128, 0))); 00114 break; 00115 case wxLOG_Message: 00116 case wxLOG_Status: 00117 default: 00118 textCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK)); 00119 break; 00120 } 00121 wxLogTextCtrl::DoLog(level, msg, timestamp); 00122 } 00123 }
void FlexiLog::SetStatusText | ( | const wxString & | status | ) |
Set status text in log window.
Definition at line 126 of file flexilog.cpp.
00127 { 00128 if (textCtrl && textCtrl->GetParent()) 00129 if (textCtrl->GetParent()->IsKindOf(CLASSINFO(wxFrame))) 00130 ((wxFrame *)textCtrl->GetParent())->SetStatusText(status); 00131 }
void FlexiLog::LogMessage | ( | const wxString & | msg, | |
wxLogLevel | loglevel | |||
) |
Log message thread safe - adds log event to be processed later if not main thread.
Definition at line 134 of file flexilog.cpp.
00135 { 00136 if (!kernel || kernel->GetMainThreadID() == wxThread::GetCurrentId()) 00137 { 00138 switch (loglevel) 00139 { 00140 case wxLOG_FatalError: 00141 wxLogFatalError(msg); 00142 break; 00143 case wxLOG_Error: 00144 wxLogError(msg); 00145 break; 00146 case wxLOG_Warning: 00147 wxLogWarning(msg); 00148 break; 00149 case wxLOG_Info: 00150 wxLogVerbose(msg); 00151 break; 00152 case wxLOG_Debug: 00153 wxLogDebug(msg); 00154 break; 00155 case wxLOG_Trace: 00156 case wxLOG_Progress: 00157 case wxLOG_Message: 00158 wxLogMessage(msg); 00159 break; 00160 case wxLOG_Status: 00161 wxLogStatus(msg); 00162 break; 00163 } 00164 } 00165 else 00166 { 00167 wxCommandEvent ev = Event::GET_EVT_LOG(msg + wxT(" [async]"), loglevel); 00168 kernel->GetMessageSink()->PostEvent(ev); 00169 } 00170 }
friend class Kernel [friend] |
Definition at line 87 of file flexilog.h.
wxTextCtrl* VRUT::FlexiLog::textCtrl [protected] |
wxFileOutputStream* VRUT::FlexiLog::dbgout [protected] |
wxTextOutputStream* VRUT::FlexiLog::dout [protected] |
bool VRUT::FlexiLog::logToTextCtrl [protected] |
bool VRUT::FlexiLog::syncEveryMsg [protected] |
Kernel* VRUT::FlexiLog::kernel [protected] |
Auxiliary kernel instance pointer - eg. enables kernel access when logging from modules.
Definition at line 49 of file flexilog.h.