#include <wx/log.h>
This simple class allows you to chain log sinks, that is to install a new sink but keep passing log messages to the old one instead of replacing it completely as wxLog::SetActiveTarget does.
It is especially useful when you want to divert the logs somewhere (for example to a file or a log window) but also keep showing the error messages using the standard dialogs as wxLogGui does by default.
Example of usage:
Public Member Functions | |
wxLogChain (wxLog *logger) | |
Sets the specified logger (which may be NULL) as the default log target but the log messages are also passed to the previous log target if any. | |
virtual | ~wxLogChain () |
Destroys the previous log target. | |
void | DetachOldLog () |
Detaches the old log target so it won't be destroyed when the wxLogChain object is destroyed. | |
wxLog * | GetOldLog () const |
Returns the pointer to the previously active log target (which may be NULL). | |
bool | IsPassingMessages () const |
Returns true if the messages are passed to the previously active log target (default) or false if PassMessages() had been called. | |
void | PassMessages (bool passMessages) |
By default, the log messages are passed to the previously active log target. | |
void | SetLog (wxLog *logger) |
Sets another log target to use (may be NULL). | |
Public Member Functions inherited from wxLog | |
wxLogFormatter * | SetFormatter (wxLogFormatter *formatter) |
Sets the specified formatter as the active one. | |
virtual void | Flush () |
Some of wxLog implementations, most notably the standard wxLogGui class, buffer the messages (for example, to avoid showing the user a zillion of modal message boxes one after another – which would be really annoying). | |
void | LogRecord (wxLogLevel level, const wxString &msg, const wxLogRecordInfo &info) |
Log the given record. | |
Additional Inherited Members | |
Static Public Member Functions inherited from wxLog | |
static void | AddTraceMask (const wxString &mask) |
Add the mask to the list of allowed masks for wxLogTrace(). | |
static void | ClearTraceMasks () |
Removes all trace masks previously set with AddTraceMask(). | |
static const wxArrayString & | GetTraceMasks () |
Returns the currently allowed list of string trace masks. | |
static bool | IsAllowedTraceMask (const wxString &mask) |
Returns true if the mask is one of allowed masks for wxLogTrace(). | |
static void | RemoveTraceMask (const wxString &mask) |
Remove the mask from the list of allowed masks for wxLogTrace(). | |
static void | DontCreateOnDemand () |
Instructs wxLog to not create new log targets on the fly if there is none currently (see GetActiveTarget()). | |
static wxLog * | GetActiveTarget () |
Returns the pointer to the active log target (may be NULL). | |
static wxLog * | SetActiveTarget (wxLog *logtarget) |
Sets the specified log target as the active one. | |
static wxLog * | SetThreadActiveTarget (wxLog *logger) |
Sets a thread-specific log target. | |
static void | FlushActive () |
Flushes the current log target if any, does nothing if there is none. | |
static void | Resume () |
Resumes logging previously suspended by a call to Suspend(). | |
static void | Suspend () |
Suspends the logging until Resume() is called. | |
static wxLogLevel | GetLogLevel () |
Returns the current log level limit. | |
static bool | IsLevelEnabled (wxLogLevel level, wxString component) |
Returns true if logging at this level is enabled for the current thread. | |
static void | SetComponentLevel (const wxString &component, wxLogLevel level) |
Sets the log level for the given component. | |
static void | SetLogLevel (wxLogLevel logLevel) |
Specifies that log messages with level greater (numerically) than logLevel should be ignored and not sent to the active log target. | |
static bool | EnableLogging (bool enable=true) |
Globally enable or disable logging. | |
static bool | IsEnabled () |
Returns true if logging is enabled at all now. | |
static bool | GetRepetitionCounting () |
Returns whether the repetition counting mode is enabled. | |
static void | SetRepetitionCounting (bool repetCounting=true) |
Enables logging mode in which a log message is logged once, and in case exactly the same message successively repeats one or more times, only the number of repetitions is logged. | |
static const wxString & | GetTimestamp () |
Returns the current timestamp format string. | |
static void | SetTimestamp (const wxString &format) |
Sets the timestamp format prepended by the default log targets to all messages. | |
static void | DisableTimestamp () |
Disables time stamping of the log messages. | |
static bool | GetVerbose () |
Returns whether the verbose mode is currently active. | |
static void | SetVerbose (bool verbose=true) |
Activates or deactivates verbose mode in which the verbose messages are logged as the normal ones instead of being silently dropped. | |
Protected Member Functions inherited from wxLog | |
virtual void | DoLogRecord (wxLogLevel level, const wxString &msg, const wxLogRecordInfo &info) |
Called to log a new record. | |
virtual void | DoLogTextAtLevel (wxLogLevel level, const wxString &msg) |
Called to log the specified string at given level. | |
virtual void | DoLogText (const wxString &msg) |
Called to log the specified string. | |
wxLogChain::wxLogChain | ( | wxLog * | logger | ) |
Sets the specified logger
(which may be NULL) as the default log target but the log messages are also passed to the previous log target if any.
|
virtual |
Destroys the previous log target.
void wxLogChain::DetachOldLog | ( | ) |
Detaches the old log target so it won't be destroyed when the wxLogChain object is destroyed.
wxLog* wxLogChain::GetOldLog | ( | ) | const |
Returns the pointer to the previously active log target (which may be NULL).
bool wxLogChain::IsPassingMessages | ( | ) | const |
Returns true if the messages are passed to the previously active log target (default) or false if PassMessages() had been called.
void wxLogChain::PassMessages | ( | bool | passMessages | ) |
By default, the log messages are passed to the previously active log target.
Calling this function with false parameter disables this behaviour (presumably temporarily, as you shouldn't use wxLogChain at all otherwise) and it can be reenabled by calling it again with passMessages set to true.
void wxLogChain::SetLog | ( | wxLog * | logger | ) |
Sets another log target to use (may be NULL).
The log target specified in the wxLogChain(wxLog*) constructor or in a previous call to this function is deleted. This doesn't change the old log target value (the one the messages are forwarded to) which still remains the same as was active when wxLogChain object was created.