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.