The functions in this section work with and manipulate the active log target.
The {\it OnLog()} is called by the {\it wxLogXXX()} functions and invokes the
{\it DoLog()} of the active log target if any. Get/Set methods are used to
-install/query the current active target and, finally, {\it
-DontCreateOnDemand()} disables the automatic creation of a standard log target
+install/query the current active target and, finally,
+\helpref{DontCreateOnDemand()}{wxlogdontcreateondemand}
+disables the automatic creation of a standard log target
if none actually exists. It is only useful when the application is terminating
and shouldn't be used in other situations because it may easily lead to a loss
of messages.
\helpref{AddTraceMask}{wxlogaddtracemask}\\
\helpref{RemoveTraceMask}{wxlogremovetracemask}\\
+\helpref{ClearTraceMasks}{wxlogcleartracemasks}\\
\helpref{IsAllowedTraceMask}{wxlogisallowedtracemask}\\
\helpref{SetVerbose}{wxlogsetverbose}\\
\helpref{GetVerbose}{wxloggetverbose}\\
See also: \helpref{RemoveTraceMask}{wxlogremovetracemask}
+\membersection{wxLog::ClearTraceMasks}\label{wxlogcleartracemasks}
+
+\func{static void}{ClearTraceMasks}{\void}
+
+Removes all trace masks previously set with
+\helpref{AddTraceMask}{wxlogaddtracemask}.
+
+See also: \helpref{RemoveTraceMask}{wxlogremovetracemask}
+
\membersection{wxLog::OnLog}\label{wxlogonlog}
\func{static void}{OnLog}{\param{wxLogLevel }{ level}, \param{const char * }{ message}}
\func{static void}{DontCreateOnDemand}{\void}
Instructs wxLog to not create new log targets on the fly if there is none
-currently. (Almost) for internal use only.
+currently. (Almost) for internal use only: it is supposed to be called by the
+application shutdown code.
+
+Note that this function also calls
+\helpref{ClearTraceMasks}{wxlogcleartracemasks}.
\membersection{wxLog::Flush}\label{wxlogflush}
void SetVerbose(bool bVerbose = TRUE) { m_bVerbose = bVerbose; }
// should GetActiveTarget() try to create a new log object if the
// current is NULL?
- static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; }
+ static void DontCreateOnDemand();
// trace mask (see wxTraceXXX constants for details)
static void SetTraceMask(wxTraceMask ulMask) { ms_ulTraceMask = ulMask; }
static void AddTraceMask(const wxString& str) { ms_aTraceMasks.Add(str); }
// add string trace mask
static void RemoveTraceMask(const wxString& str);
+ // remove all string trace masks
+ static void ClearTraceMasks();
// sets the timestamp string: this is used as strftime() format string
// for the log targets which add time stamps to the messages - set it
return pOldLogger;
}
+void wxLog::DontCreateOnDemand()
+{
+ ms_bAutoCreate = FALSE;
+
+ // this is usually called at the end of the program and we assume that it
+ // is *always* called at the end - so we free memory here to avoid false
+ // memory leak reports from wxWin memory tracking code
+ ClearTraceMasks();
+}
+
void wxLog::RemoveTraceMask(const wxString& str)
{
int index = ms_aTraceMasks.Index(str);
ms_aTraceMasks.Remove((size_t)index);
}
+void wxLog::ClearTraceMasks()
+{
+ ms_aTraceMasks.Clear();
+}
+
void wxLog::TimeStamp(wxString *str)
{
if ( ms_timestamp )