// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+
+/**
+ Different standard log levels (you may also define your own) used with
+ wxLog::OnLog() by standard wxLog functions wxLogError(), wxLogWarning(),
+ etc...
+*/
+enum wxLogLevelValues
+{
+ wxLOG_FatalError, //!< program can't continue, abort immediately
+ 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_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_Max = 10000
+};
+
+/**
+ The type used for trace masks.
+*/
+typedef unsigned long wxTraceMask;
+
+/**
+ The type used to specify a log level.
+
+ Default values of ::wxLogLevel used by wxWidgets are contained in the
+ ::wxLogLevelValues enumeration.
+*/
+typedef unsigned long wxLogLevel;
+
+
/**
@class wxLogWindow
/**
Returns the current timestamp format string.
*/
- static const wxString GetTimestamp();
+ static const wxString& GetTimestamp();
/**
Returns the current trace mask, see Customization() section for details.
@see AddTraceMask().
*/
- static const wxArrayString GetTraceMasks();
+ static const wxArrayString& GetTraceMasks();
/**
Returns whether the verbose mode is currently active.
Forwards the message at specified level to the @e DoLog() function of the
active log target if there is any, does nothing otherwise.
*/
- static void OnLog(wxLogLevel level, const wxString& message);
+ static void OnLog(wxLogLevel level, const wxString& msg, time_t t);
/**
Remove the @a mask from the list of allowed masks for
static wxLog* SetActiveTarget(wxLog* logtarget);
/**
- Specifies that log messages with level logLevel should be ignored
- and not sent to the active log target.
+ Specifies that log messages with level greater (numerically) than
+ @a logLevel should be ignored and not sent to the active log target.
*/
static void SetLogLevel(wxLogLevel logLevel);
*/
static void Suspend();
+ /**
+ Log the given message.
+
+ This function should only be called from the DoLog() implementations in
+ the derived classes (which can't call wxLog::DoLog() directly as it is
+ protected), it should not be used for logging new messages which can be
+ only sent to the currently active logger using OnLog() which also
+ checks if the logging (for this level) is enabled while this method
+ just directly calls DoLog().
+
+ Example of use of this class from wxLogChain:
+ @code
+ void wxLogChain::DoLog(wxLogLevel level, const wxString& msg, time_t t)
+ {
+ // let the previous logger show it
+ if ( m_logOld && IsPassingMessages() )
+ m_logOld->Log(level, msg, t);
+
+ // and also send it to the new one
+ if ( m_logNew && m_logNew != this )
+ m_logNew->Log(level, msg, t);
+ }
+ @endcode
+
+ @since 2.9.0
+ */
+ void Log(wxLogLevel level, const wxString& msg, time_t timestamp);
+
protected:
/**
// Global functions/macros
// ============================================================================
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
For all normal, informational messages. They also appear in a message box
void wxVLogMessage(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
For verbose output. Normally, it is suppressed, but might be activated if
void wxVLogVerbose(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
For warnings - they are also normally shown to the user, but don't
void wxVLogWarning(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Like wxLogError(), but also terminates the program with the exit code 3.
void wxVLogFatalError(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
The functions to use for error messages, i.e. the messages that must be
void wxVLogError(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Like wxLogDebug(), trace functions only do something in debug builds and
void wxVLogTrace(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Like wxLogDebug(), trace functions only do something in debug builds and
va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Like wxLogDebug(), trace functions only do something in debug builds and
void wxVLogTrace(wxTraceMask mask, const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
The right functions for debug output. They only do something in debug mode
void wxVLogDebug(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Messages logged by this function will appear in the statusbar of the
void wxVLogStatus(const char* formatString, va_list argPtr);
//@}
-/** @ingroup group_funcmacro_log */
+/** @addtogroup group_funcmacro_log */
//@{
/**
Mostly used by wxWidgets itself, but might be handy for logging errors