Added wxLog::Get/SetLogLevel
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
8eb70827f3
commit
edc738528a
@ -57,7 +57,7 @@ situations because it may easily lead to a loss of messages.
|
||||
\membersection{Logging functions}
|
||||
|
||||
There are two functions which must be implemented by any derived class to
|
||||
actually process the log messages: \helpref{DoLog}{wxlogdolog} and
|
||||
actually process the log messages: \helpref{DoLog}{wxlogdolog} and
|
||||
\helpref{DoLogString}{wxlogdologstring}. The second function receives a string
|
||||
which just has to be output in some way and the easiest way to write a new log
|
||||
target is to override just this function in the derived class. If more control
|
||||
@ -72,7 +72,7 @@ night in the current time zone).
|
||||
There also functions to support message buffering. Why are they needed?
|
||||
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).
|
||||
message boxes one after another - which would be really annoying).
|
||||
\helpref{Flush()}{wxlogflush} shows them all and clears the buffer contents.
|
||||
Although this function doesn't do anything if the buffer is already empty,
|
||||
\helpref{HasPendingMessages()}{wxloghaspendingmessages} is also provided which
|
||||
@ -96,9 +96,9 @@ problem.
|
||||
|
||||
As for the (real) trace messages, their handling depends on the settings of
|
||||
the (application global) {\it trace mask}. There are two ways to specify it:
|
||||
either by using \helpref{SetTraceMask}{wxlogsettracemask} and
|
||||
\helpref{GetTraceMask}{wxloggettracemask} and using
|
||||
\helpref{wxLogTrace}{wxlogtrace} which takes an integer mask or by using
|
||||
either by using \helpref{SetTraceMask}{wxlogsettracemask} and
|
||||
\helpref{GetTraceMask}{wxloggettracemask} and using
|
||||
\helpref{wxLogTrace}{wxlogtrace} which takes an integer mask or by using
|
||||
\helpref{AddTraceMask}{wxlogaddtracemask} for string trace masks.
|
||||
|
||||
The difference between bit-wise and string trace masks is that a message using
|
||||
@ -112,7 +112,7 @@ For example,
|
||||
// wxTraceOleCalls is one of standard bit masks
|
||||
wxLogTrace(wxTraceRefCount | wxTraceOleCalls, "Active object ref count: %d", nRef);
|
||||
\end{verbatim}
|
||||
will do something only if the current trace mask contains both
|
||||
will do something only if the current trace mask contains both
|
||||
{\tt wxTraceRefCount} and {\tt wxTraceOle}, but
|
||||
|
||||
\begin{verbatim}
|
||||
@ -131,7 +131,7 @@ the preferred way of working with trace messages. The integer trace mask is
|
||||
kept for compatibility and for additional (but very rarely needed) flexibility
|
||||
only.
|
||||
|
||||
The standard trace masks are given in \helpref{wxLogTrace}{wxlogtrace}
|
||||
The standard trace masks are given in \helpref{wxLogTrace}{wxlogtrace}
|
||||
documentation.
|
||||
|
||||
Finally, the {\it wxLog::DoLog()} function automatically prepends a time stamp
|
||||
@ -145,7 +145,7 @@ format disables timestamping of the messages completely.
|
||||
{\bf NB:} Timestamping is disabled for Visual C++ users in debug builds by
|
||||
default because otherwise it would be impossible to directly go to the line
|
||||
from which the log message was generated by simply clicking in the debugger
|
||||
window on the corresponding error message. If you wish to enable it, please use
|
||||
window on the corresponding error message. If you wish to enable it, please use
|
||||
\helpref{SetTimestamp}{wxlogsettimestamp} explicitly.
|
||||
|
||||
\helpref{AddTraceMask}{wxlogaddtracemask}\\
|
||||
@ -171,7 +171,7 @@ window on the corresponding error message. If you wish to enable it, please use
|
||||
|
||||
\func{static void}{AddTraceMask}{\param{const wxString\& }{mask}}
|
||||
|
||||
Add the {\it mask} to the list of allowed masks for
|
||||
Add the {\it mask} to the list of allowed masks for
|
||||
\helpref{wxLogTrace}{wxlogtrace}.
|
||||
|
||||
\wxheading{See also}
|
||||
@ -182,7 +182,7 @@ Add the {\it mask} to the list of allowed masks for
|
||||
|
||||
\func{static void}{ClearTraceMasks}{\void}
|
||||
|
||||
Removes all trace masks previously set with
|
||||
Removes all trace masks previously set with
|
||||
\helpref{AddTraceMask}{wxlogaddtracemask}.
|
||||
|
||||
\wxheading{See also}
|
||||
@ -240,7 +240,7 @@ flushed, so Suspend() works as expected with it).
|
||||
|
||||
\func{static void}{Resume}{\void}
|
||||
|
||||
Resumes logging previously suspended by a call to
|
||||
Resumes logging previously suspended by a call to
|
||||
\helpref{Suspend}{wxlogsuspend}. All messages logged in the meanwhile will be
|
||||
flushed soon.
|
||||
|
||||
@ -253,7 +253,7 @@ of the message as specified in the call of {\it wxLogXXX()} function which
|
||||
generated it and {\it timestamp} is the moment when the message was generated.
|
||||
|
||||
The base class version prepends the timestamp to the message, adds a prefix
|
||||
corresponding to the log level and then calls
|
||||
corresponding to the log level and then calls
|
||||
\helpref{DoLogString}{wxlogdologstring} with the resulting string.
|
||||
|
||||
\membersection{wxLog::DoLogString}\label{wxlogdologstring}
|
||||
@ -263,7 +263,7 @@ corresponding to the log level and then calls
|
||||
Called to log the specified string. The timestamp is already included into the
|
||||
string but still passed to this function.
|
||||
|
||||
A simple implementation may just send the string to {\tt stdout} or, better,
|
||||
A simple implementation may just send the string to {\tt stdout} or, better,
|
||||
{\tt stderr}.
|
||||
|
||||
\membersection{wxLog::DontCreateOnDemand}\label{wxlogdontcreateondemand}
|
||||
@ -274,7 +274,7 @@ Instructs wxLog to not create new log targets on the fly if there is none
|
||||
currently. (Almost) for internal use only: it is supposed to be called by the
|
||||
application shutdown code.
|
||||
|
||||
Note that this function also calls
|
||||
Note that this function also calls
|
||||
\helpref{ClearTraceMasks}{wxlogcleartracemasks}.
|
||||
|
||||
\membersection{wxLog::Flush}\label{wxlogflush}
|
||||
@ -314,6 +314,19 @@ logged as the normal ones instead of being silently dropped.
|
||||
|
||||
Returns whether the verbose mode is currently active.
|
||||
|
||||
\membersection{wxLog::SetLogLevel}\label{wxlogsetloglevel}
|
||||
|
||||
\func{static void}{SetLogLevel}{\param{wxLogLevel }{ logLevel}}
|
||||
|
||||
Specifies that log messages with $level > logLevel$ should be ignored
|
||||
and not sent to the active log target.
|
||||
|
||||
\membersection{wxLog::GetLogLevel}\label{wxloggetloglevel}
|
||||
|
||||
\func{static wxLogLevel}{GetLogLevel}{\void}
|
||||
|
||||
Returns the current log level limit.
|
||||
|
||||
\membersection{wxLog::SetTimestamp}\label{wxlogsettimestamp}
|
||||
|
||||
\func{void}{SetTimestamp}{\param{const char * }{ format}}
|
||||
@ -345,17 +358,17 @@ for details.
|
||||
|
||||
\func{static bool}{IsAllowedTraceMask}{\param{const wxChar *}{mask}}
|
||||
|
||||
Returns TRUE if the {\it mask} is one of allowed masks for
|
||||
Returns TRUE if the {\it mask} is one of allowed masks for
|
||||
\helpref{wxLogTrace}{wxlogtrace}.
|
||||
|
||||
See also: \helpref{AddTraceMask}{wxlogaddtracemask},
|
||||
See also: \helpref{AddTraceMask}{wxlogaddtracemask},
|
||||
\helpref{RemoveTraceMask}{wxlogremovetracemask}
|
||||
|
||||
\membersection{wxLog::RemoveTraceMask}\label{wxlogremovetracemask}
|
||||
|
||||
\func{static void}{RemoveTraceMask}{\param{const wxString\& }{mask}}
|
||||
|
||||
Remove the {\it mask} from the list of allowed masks for
|
||||
Remove the {\it mask} from the list of allowed masks for
|
||||
\helpref{wxLogTrace}{wxlogtrace}.
|
||||
|
||||
See also: \helpref{AddTraceMask}{wxlogaddtracemask}
|
||||
@ -365,7 +378,7 @@ See also: \helpref{AddTraceMask}{wxlogaddtracemask}
|
||||
\section{\class{wxLogChain}}\label{wxlogchain}
|
||||
|
||||
This simple class allows 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
|
||||
keep passing log messages to the old one instead of replacing it completely as
|
||||
\helpref{SetActiveTarget}{wxlogsetactivetarget} does.
|
||||
|
||||
It is especially useful when you want to divert the logs somewhere (for
|
||||
@ -421,7 +434,7 @@ NULL}).
|
||||
\constfunc{bool}{IsPassingMessages}{\void}
|
||||
|
||||
Returns {\tt TRUE} if the messages are passed to the previously active log
|
||||
target (default) or {\tt FALSE} if \helpref{PassMessages}{wxlogchainpassmessages}
|
||||
target (default) or {\tt FALSE} if \helpref{PassMessages}{wxlogchainpassmessages}
|
||||
had been called.
|
||||
|
||||
\membersection{wxLogChain::PassMessages}\label{wxlogchainpassmessages}
|
||||
@ -549,7 +562,7 @@ forwards the log messages to the previously installed one in addition to
|
||||
processing them itself.
|
||||
|
||||
Unlike \helpref{wxLogChain}{wxlogchain} which is usually used directly as is,
|
||||
this class must be derived from to implement \helpref{DoLog}{wxlogdolog}
|
||||
this class must be derived from to implement \helpref{DoLog}{wxlogdolog}
|
||||
and/or \helpref{DoLogString}{wxlogdologstring} methods.
|
||||
|
||||
\wxheading{Derived from}
|
||||
@ -592,7 +605,7 @@ wxWindows applications which send all the output to {\tt stderr}.
|
||||
|
||||
\func{}{wxLogStderr}{\param{FILE }{*fp = NULL}}
|
||||
|
||||
Constructs a log target which sends all the log messages to the given
|
||||
Constructs a log target which sends all the log messages to the given
|
||||
{\tt FILE}. If it is {\tt NULL}, the messages are sent to {\tt stderr}.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxLogStream %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -623,7 +636,7 @@ the standard iostream library support ({\tt wxUSE\_STD\_IOSTREAM} must be on).
|
||||
|
||||
\func{}{wxLogStream}{\param{std::ostream }{*ostr = NULL}}
|
||||
|
||||
Constructs a log target which sends all the log messages to the given
|
||||
Constructs a log target which sends all the log messages to the given
|
||||
output stream. If it is {\tt NULL}, the messages are sent to {\tt cerr}.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxLogTextCtrl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -692,7 +705,7 @@ Creates the log frame window and starts collecting the messages in it.
|
||||
|
||||
\docparam{title}{The title for the log frame}
|
||||
|
||||
\docparam{show}{{\tt TRUE} to show the frame initially (default), otherwise
|
||||
\docparam{show}{{\tt TRUE} to show the frame initially (default), otherwise
|
||||
\helpref{wxLogWindow::Show}{wxlogwindowshow} must be called later.}
|
||||
|
||||
\docparam{passToOld}{{\tt TRUE} to process the log messages normally in addition to
|
||||
|
@ -46,6 +46,14 @@ typedef unsigned long wxLogLevel;
|
||||
|
||||
#include "wx/dynarray.h"
|
||||
|
||||
#ifndef wxUSE_LOG_DEBUG
|
||||
# ifdef __WXDEBUG__
|
||||
# define wxUSE_LOG_DEBUG 1
|
||||
# else // !__WXDEBUG__
|
||||
# define wxUSE_LOG_DEBUG 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -57,12 +65,13 @@ enum
|
||||
wxLOG_Error, // a serious error, user must be informed about it
|
||||
wxLOG_Warning, // user is normally informed about it but may be ignored
|
||||
wxLOG_Message, // normal message (i.e. normal output of a non GUI app)
|
||||
wxLOG_Info, // informational message (a.k.a. 'Verbose')
|
||||
wxLOG_Status, // informational: might go to the status line of GUI app
|
||||
wxLOG_Info, // informational message (a.k.a. 'Verbose')
|
||||
wxLOG_Debug, // never shown to the user, disabled in release mode
|
||||
wxLOG_Trace, // trace messages are also only enabled in debug mode
|
||||
wxLOG_Progress, // used for progress indicator (not yet)
|
||||
wxLOG_User = 100 // user defined levels start here
|
||||
wxLOG_User = 100, // user defined levels start here
|
||||
wxLOG_Max = UINT_MAX
|
||||
};
|
||||
|
||||
// symbolic trace masks - wxLogTrace("foo", "some trace message...") will be
|
||||
@ -122,7 +131,7 @@ public:
|
||||
// derived classes
|
||||
static void OnLog(wxLogLevel level, const wxChar *szString, time_t t)
|
||||
{
|
||||
if ( IsEnabled() ) {
|
||||
if ( IsEnabled() && ms_logLevel >= level ) {
|
||||
wxLog *pLogger = GetActiveTarget();
|
||||
if ( pLogger )
|
||||
pLogger->DoLog(level, szString, t);
|
||||
@ -167,6 +176,10 @@ public:
|
||||
// verbose mode is activated by standard command-line '-verbose'
|
||||
// option
|
||||
static void SetVerbose(bool bVerbose = TRUE) { ms_bVerbose = bVerbose; }
|
||||
|
||||
// Set log level. Log messages with level > logLevel will not be logged.
|
||||
static void SetLogLevel(wxLogLevel logLevel) { ms_logLevel = logLevel; }
|
||||
|
||||
// should GetActiveTarget() try to create a new log object if the
|
||||
// current is NULL?
|
||||
static void DontCreateOnDemand();
|
||||
@ -187,6 +200,7 @@ public:
|
||||
// to NULL to disable time stamping completely.
|
||||
static void SetTimestamp(const wxChar *ts) { ms_timestamp = ts; }
|
||||
|
||||
|
||||
// accessors
|
||||
// gets the verbose status
|
||||
static bool GetVerbose() { return ms_bVerbose; }
|
||||
@ -195,10 +209,13 @@ public:
|
||||
// is this trace mask in the list?
|
||||
static bool IsAllowedTraceMask(const wxChar *mask)
|
||||
{ return ms_aTraceMasks.Index(mask) != wxNOT_FOUND; }
|
||||
// return the current loglevel limit
|
||||
static wxLogLevel GetLogLevel() { return ms_logLevel; }
|
||||
|
||||
// get the current timestamp format string (may be NULL)
|
||||
static const wxChar *GetTimestamp() { return ms_timestamp; }
|
||||
|
||||
|
||||
// helpers
|
||||
// put the time stamp into the string if ms_timestamp != NULL (don't
|
||||
// change it otherwise)
|
||||
@ -227,6 +244,8 @@ private:
|
||||
static bool ms_bAutoCreate; // create new log targets on demand?
|
||||
static bool ms_bVerbose; // FALSE => ignore LogInfo messages
|
||||
|
||||
static wxLogLevel ms_logLevel; // limit logging to levels <= ms_logLevel
|
||||
|
||||
static size_t ms_suspendCount; // if positive, logs are not flushed
|
||||
|
||||
// format string for strftime(), if NULL, time stamping log messages is
|
||||
@ -541,7 +560,7 @@ DECLARE_LOG_FUNCTION(SysError);
|
||||
DECLARE_LOG_FUNCTION2(SysError, long lErrCode);
|
||||
|
||||
// debug functions do nothing in release mode
|
||||
#ifdef __WXDEBUG__
|
||||
#if wxUSE_LOG_DEBUG
|
||||
DECLARE_LOG_FUNCTION(Debug);
|
||||
|
||||
// first kind of LogTrace is unconditional: it doesn't check the level,
|
||||
|
@ -845,6 +845,8 @@ bool wxLog::ms_doLog = TRUE;
|
||||
bool wxLog::ms_bAutoCreate = TRUE;
|
||||
bool wxLog::ms_bVerbose = FALSE;
|
||||
|
||||
wxLogLevel wxLog::ms_logLevel = wxLOG_Max; // log everything by default
|
||||
|
||||
size_t wxLog::ms_suspendCount = 0;
|
||||
|
||||
#if wxUSE_GUI
|
||||
|
Loading…
Reference in New Issue
Block a user