X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b21126db7a8232fa9e64b29f916d73d6b0153bef..6418ad5ec8e66c3b367b59b56e0849399774f3ec:/interface/wx/log.h diff --git a/interface/wx/log.h b/interface/wx/log.h index 620bd1c2fa..d404dafe9f 100644 --- a/interface/wx/log.h +++ b/interface/wx/log.h @@ -27,11 +27,6 @@ enum wxLogLevelValues wxLOG_Max = 10000 }; -/** - The type used for trace masks. -*/ -typedef unsigned long wxTraceMask; - /** The type used to specify a log level. @@ -613,24 +608,11 @@ public: but may be activated, for example, in order to help the user find some program problem. - As for the (real) trace messages, their handling depends on the settings of - the (application global) @e trace mask which can either be specified using - SetTraceMask(), GetTraceMask() and wxLogTrace() which takes an integer mask - or using AddTraceMask() for string trace masks. + As for the (real) trace messages, their handling depends on the currently + enabled trace masks: if AddTraceMask() was called for the mask of the given + message, it will be logged, otherwise nothing happens. - The difference between bit-wise and string trace masks is that a message using - integer trace mask will only be logged if all bits of the mask are set in the - current mask while a message using string mask will be logged simply if the - mask had been added before to the list of allowed ones. For example, - - @code - wxLogTrace( wxTraceRefCount|wxTraceOleCalls, "Active object ref count: %d", nRef ); - @endcode - - will do something only if the current trace mask contains both @c wxTraceRefCount - and @c wxTraceOle, but: - @code wxLogTrace( wxTRACE_OleCalls, "IFoo::Bar() called" ); @endcode @@ -641,11 +623,6 @@ public: wxLog::AddTraceMask( wxTRACE_OleCalls); @endcode - Using string masks is simpler and allows you to easily add custom ones, so this - is 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 wxLogTrace() documentation. Finally, the @e wxLog::DoLog() function automatically prepends a time stamp @@ -763,9 +740,10 @@ public: /** Returns the current timestamp format string. */ - static const wxString GetTimestamp(); + static const wxString& GetTimestamp(); /** + @deprecated Returns the current trace mask, see Customization() section for details. */ static wxTraceMask GetTraceMask(); @@ -775,7 +753,7 @@ public: @see AddTraceMask(). */ - static const wxArrayString GetTraceMasks(); + static const wxArrayString& GetTraceMasks(); /** Returns whether the verbose mode is currently active. @@ -793,7 +771,7 @@ public: 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 @@ -848,7 +826,8 @@ public: static void DisableTimestamp(); /** - Sets the trace mask, see @ref log_derivingyours section for details. + @deprecated + Sets the trace mask, see @ref log_tracemasks section for details. */ static void SetTraceMask(wxTraceMask mask); @@ -874,6 +853,34 @@ public: */ 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: /** @@ -947,7 +954,7 @@ protected: @library{wxbase} @category{logging} */ -class wxLogNull : public wxLog +class wxLogNull { public: /** @@ -1084,15 +1091,15 @@ void wxVLogError(const char* formatString, va_list argPtr); function is that usually there are a lot of trace messages, so it might make sense to separate them from other debug messages. - wxLogDebug(const char*,const char*,...) and - wxLogDebug(wxTraceMask,const char*,...) can be used instead if you would - like to be able to separate trace messages into different categories which - can be enabled or disabled with the static functions provided in wxLog. + wxLogTrace(const char*,const char*,...) and can be used instead of + wxLogDebug() if you would like to be able to separate trace messages into + different categories which can be enabled or disabled with + wxLog::AddTraceMask() and wxLog::RemoveTraceMask(). @header{wx/log.h} */ -void wxLogTrace(const char* formatString, ... ); -void wxVLogTrace(const char* formatString, va_list argPtr); +void wxLogTrace(const char *mask, const char* formatString, ... ); +void wxVLogTrace(const char *mask, const char* formatString, va_list argPtr); //@} /** @addtogroup group_funcmacro_log */ @@ -1150,7 +1157,7 @@ void wxVLogTrace(const char* mask, This version of wxLogTrace() only logs the message if all the bits corresponding to the @a mask are set in the wxLog trace mask which can be set by calling wxLog::SetTraceMask(). This version is less flexible than - wxLogDebug(const char*,const char*,...) because it doesn't allow defining + wxLogTrace(const char*,const char*,...) because it doesn't allow defining the user trace masks easily. This is why it is deprecated in favour of using string trace masks.