55#define DO_LOG_MESSAGE(level, fmt, ...) \
57 if (level <= wxLog::GetLogLevel()) { \
58 Logger::logMessage(level, __FILE__, __LINE__, fmt, ##__VA_ARGS__); \
63 if (level > wxLog::GetLogLevel()) \
66 Logger().get(level, __FILE__, __LINE__)
68#define TRACE_LOG _LOG(wxLOG_Trace)
69#define DEBUG_LOG _LOG(wxLOG_Debug)
70#define INFO_LOG _LOG(wxLOG_Info)
71#define MESSAGE_LOG _LOG(wxLOG_Message)
72#define WARNING_LOG _LOG(wxLOG_Warning)
73#define ERROR_LOG _LOG(wxLOG_Error)
75#define LOG_TRACE(fmt, ...) DO_LOG_MESSAGE(wxLOG_Trace, fmt, ##__VA_ARGS__);
76#define LOG_DEBUG(fmt, ...) DO_LOG_MESSAGE(wxLOG_Debug, fmt, ##__VA_ARGS__);
77#define LOG_INFO(fmt, ...) DO_LOG_MESSAGE(wxLOG_Info, fmt, ##__VA_ARGS__);
78#define LOG_MESSAGE(fmt, ...) DO_LOG_MESSAGE(wxLOG_Message, fmt, ##__VA_ARGS__);
79#define LOG_WARNING(fmt, ...) DO_LOG_MESSAGE(wxLOG_Warning, fmt, ##__VA_ARGS__);
80#define LOG_ERROR(fmt, ...) DO_LOG_MESSAGE(wxLOG_Error, fmt, ##__VA_ARGS__);
90 static const wxLogLevel LOG_BADLEVEL;
97 void Flush()
override;
99 void DoLogRecord(wxLogLevel level,
const wxString& msg,
100 const wxLogRecordInfo& info)
override;
102 static wxLogLevel str2level(
const char*
string);
103 static std::string level2str(wxLogLevel level);
116 void logRecord(wxLogLevel level,
const char* msg,
const wxLogRecordInfo info);
118 std::ostream& get(wxLogLevel level,
const char* path,
int line);
120 static void logMessage(wxLogLevel level,
const char* path,
int line,
121 const char* fmt, ...);
124 std::stringstream os;
125 wxLogRecordInfo info;
133 : m_count(n), m_level(level), m_not_logged(0) {}
136 void Log(
const std::string& message);
139 const unsigned m_count;
140 const wxLogLevel m_level;
141 unsigned m_not_logged;
148 wxLogLevel level = wxLOG_Message)
149 : m_interval(interval), m_level(level), m_not_logged(0) {}
152 void Log(
const std::string& message);
155 const std::chrono::seconds m_interval;
156 const wxLogLevel m_level;
157 std::chrono::time_point<std::chrono::steady_clock> m_last_logged;
158 unsigned m_not_logged;
Filter logging every nth message.
void Log(const std::string &message)
Log a repeated message after suppressing n ones.
Transient logger class, instantiated/used by the LOG macros.
void logRecord(wxLogLevel level, const char *msg, const wxLogRecordInfo info)
DoLogRecord public wrapper.
Customized logger class appending to a file providing:
Filter logging repeated message with specified interval.
void Log(const std::string &message)
Log a repeated message after interval seconds.