// get string trace masks
static const wxArrayString &GetTraceMasks() { return ms_aTraceMasks; }
- // sets the timestamp string: this is used as strftime() format string
- // for the log targets which add time stamps to the messages - set it
- // to NULL to disable time stamping completely.
- static void SetTimestamp(const wxChar *ts) { ms_timestamp = ts; }
+ // sets the time stamp string format: this is used as strftime() format
+ // string for the log targets which add time stamps to the messages; set
+ // it to empty string to disable time stamping completely.
+ static void SetTimestamp(const wxString& ts) { ms_timestamp = ts; }
+
+ // disable time stamping of log messages
+ static void DisableTimestamp() { SetTimestamp(wxEmptyString); }
// accessors
static wxLogLevel GetLogLevel() { return ms_logLevel; }
// get the current timestamp format string (may be NULL)
- static const wxChar *GetTimestamp() { return ms_timestamp; }
+ static const wxString& GetTimestamp() { return ms_timestamp; }
// helpers
time_t WXUNUSED(t)) {}
virtual void DoLogString(const wchar_t *WXUNUSED(szString),
time_t WXUNUSED(t)) {}
+#endif // WXWIN_COMPATIBILITY_2_8
+
+ // this macro should be used in the derived classes to avoid warnings about
+ // hiding the other DoLog() overloads when overriding DoLog(wxString) --
+ // but don't use it with MSVC which doesn't give this warning but does give
+ // warning when a deprecated function is overridden
+#if WXWIN_COMPATIBILITY_2_8 && !defined(__VISUALC__)
+ #define wxSUPPRESS_DOLOG_HIDE_WARNING() \
+ virtual void DoLog(wxLogLevel, const char *, time_t) { } \
+ virtual void DoLog(wxLogLevel, const wchar_t *, time_t) { }
+
+ #define wxSUPPRESS_DOLOGSTRING_HIDE_WARNING() \
+ virtual void DoLogString(const char *, time_t) { } \
+ virtual void DoLogString(const wchar_t *, time_t) { }
+#else
+ #define wxSUPPRESS_DOLOG_HIDE_WARNING()
+ #define wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
#endif
// log a line containing the number of times the previous message was
// format string for strftime(), if NULL, time stamping log messages is
// disabled
- static const wxChar *ms_timestamp;
+ static wxString ms_timestamp;
static wxTraceMask ms_ulTraceMask; // controls wxLogTrace behaviour
static wxArrayString ms_aTraceMasks; // more powerful filter for wxLogTrace
virtual void DoLog(wxLogLevel level, const wxString& szString, time_t t);
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOG_HIDE_WARNING()
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
private:
wxString m_str;
// implement sink function
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
FILE *m_fp;
DECLARE_NO_COPY_CLASS(wxLogStderr)
// implement sink function
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
// using ptr here to avoid including <iostream.h> from this file
wxSTD ostream *m_ostr;
};
// override base class version to flush the old logger as well
virtual void Flush();
+ // call to avoid destroying the old log target
+ void DetachOldLog() { m_logOld = NULL; }
+
protected:
// pass the chain to the old logger if needed
virtual void DoLog(wxLogLevel level, const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOG_HIDE_WARNING()
+
private:
// the current log target
wxLog *m_logNew;
};
// a chain log target which uses itself as the new logger
-class WXDLLIMPEXP_BASE wxLogPassThrough : public wxLogChain
+
+#define wxLogPassThrough wxLogInterposer
+
+class WXDLLIMPEXP_BASE wxLogInterposer : public wxLogChain
+{
+public:
+ wxLogInterposer();
+
+private:
+ DECLARE_NO_COPY_CLASS(wxLogInterposer)
+};
+
+// a temporary interposer which doesn't destroy the old log target
+// (calls DetachOldLog)
+
+class WXDLLIMPEXP_BASE wxLogInterposerTemp : public wxLogChain
{
public:
- wxLogPassThrough();
+ wxLogInterposerTemp();
private:
- DECLARE_NO_COPY_CLASS(wxLogPassThrough)
+ DECLARE_NO_COPY_CLASS(wxLogInterposerTemp)
};
#if wxUSE_GUI