54#define DO_LOG_MESSAGE(level, fmt, ...) \
56 if (level <= wxLog::GetLogLevel()) { \
57 Logger::logMessage(level, __FILE__, __LINE__, fmt, ##__VA_ARGS__); \
62 if (level > wxLog::GetLogLevel()) \
65 Logger().get(level, __FILE__, __LINE__)
67#define TRACE_LOG _LOG(wxLOG_Trace)
68#define DEBUG_LOG _LOG(wxLOG_Debug)
69#define INFO_LOG _LOG(wxLOG_Info)
70#define MESSAGE_LOG _LOG(wxLOG_Message)
71#define WARNING_LOG _LOG(wxLOG_Warning)
72#define ERROR_LOG _LOG(wxLOG_Error)
74#define LOG_TRACE(fmt, ...) DO_LOG_MESSAGE(wxLOG_Trace, fmt, ##__VA_ARGS__);
75#define LOG_DEBUG(fmt, ...) DO_LOG_MESSAGE(wxLOG_Debug, fmt, ##__VA_ARGS__);
76#define LOG_INFO(fmt, ...) DO_LOG_MESSAGE(wxLOG_Info, fmt, ##__VA_ARGS__);
77#define LOG_MESSAGE(fmt, ...) DO_LOG_MESSAGE(wxLOG_Message, fmt, ##__VA_ARGS__);
78#define LOG_WARNING(fmt, ...) DO_LOG_MESSAGE(wxLOG_Warning, fmt, ##__VA_ARGS__);
79#define LOG_ERROR(fmt, ...) DO_LOG_MESSAGE(wxLOG_Error, fmt, ##__VA_ARGS__);
89 static const wxLogLevel LOG_BADLEVEL;
96 void Flush()
override;
98 void DoLogRecord(wxLogLevel level,
const wxString& msg,
99 const wxLogRecordInfo& info)
override;
101 static wxLogLevel str2level(
const char*
string);
102 static std::string level2str(wxLogLevel level);
115 void logRecord(wxLogLevel level,
const char* msg,
const wxLogRecordInfo info);
117 std::ostream& get(wxLogLevel level,
const char* path,
int line);
119 static void logMessage(wxLogLevel level,
const char* path,
int line,
120 const char* fmt, ...);
123 std::stringstream os;
124 wxLogRecordInfo info;
132 : m_count(n), m_level(level), m_not_logged(0) {}
135 void Log(
const std::string& message);
138 const unsigned m_count;
139 const wxLogLevel m_level;
140 unsigned m_not_logged;
147 wxLogLevel level = wxLOG_Message)
148 : m_interval(interval), m_level(level), m_not_logged(0) {}
151 void Log(
const std::string& message);
154 const std::chrono::seconds m_interval;
155 const wxLogLevel m_level;
156 std::chrono::time_point<std::chrono::steady_clock> m_last_logged;
157 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.