Guitar
Logger.h
Go to the documentation of this file.
1 #ifndef LOGGER_H
2 #define LOGGER_H
3 
4 #define LOG_RAW 0
5 #define LOG_DEFAULT 0x0001
6 #define LOG_STDERR 0x0002
7 #define LOG_BOTH (LOG_DEFAULT | LOG_STDERR)
8 
9 #ifdef NO_LOGGER
10 #define logprint(LEVEL, STR)
11 #define logprintf(LEVEL, FMT, ...)
12 #else
13 
14 #include <chrono>
15 #include <string>
16 
17 class Logger {
18 private:
19  struct Private;
21 
22  struct LogItem;
23  typedef std::chrono::system_clock::time_point time_point_t;
24 
25  int log_file_permission() const
26  {
27  return 0644;
28  }
29 
30  int log_rotate_size() const
31  {
32  // return 10 * 1024 * 1024;
33  return 0; // rotate disabled
34  }
35 
36  time_point_t now();
37  void write(const char *ptr, size_t len);
38  void write(const LogItem &item);
39  void push(const LogItem &item);
40  void rotate();
41  void x_close();
42  void x_start();
43  void x_stop();
44  void x_pause(bool f);
45  void x_open(const std::string &log_file);
46 public:
47  Logger();
48  ~Logger();
49  void x_logprint(const char *file, int line, int level, std::string_view str);
50  void x_logprintf(const char *file, int line, int level, const char *fmt, ...);
51  static void pause(bool f);
52  static void start();
53  static void stop();
54  static void open(std::string const &log_file);
55 
56 };
57 
58 extern Logger x_logger;
59 
60 #define logprint(LEVEL, STR) x_logger.x_logprint(__FILE__, __LINE__, LEVEL, STR)
61 #define logprintf(LEVEL, FMT, ...) x_logger.x_logprintf(__FILE__, __LINE__, LEVEL, FMT, ##__VA_ARGS__)
62 
63 #endif
64 
65 #endif // LOGGER_H
Logger x_logger
Definition: Logger.cpp:27
Definition: Logger.h:17
void x_logprintf(const char *file, int line, int level, const char *fmt,...)
Definition: Logger.cpp:272
void x_start()
Definition: Logger.cpp:166
void write(const char *ptr, size_t len)
Definition: Logger.cpp:64
time_point_t now()
Definition: Logger.cpp:59
static void stop()
Definition: Logger.cpp:222
void x_open(const std::string &log_file)
Definition: Logger.cpp:148
Private * m
Definition: Logger.h:19
int log_rotate_size() const
Definition: Logger.h:30
void x_logprint(const char *file, int line, int level, std::string_view str)
Definition: Logger.cpp:239
int log_file_permission() const
Definition: Logger.h:25
static void start()
Definition: Logger.cpp:217
static void pause(bool f)
Definition: Logger.cpp:289
Logger()
Definition: Logger.cpp:48
std::chrono::system_clock::time_point time_point_t
Definition: Logger.h:22
void x_close()
Definition: Logger.cpp:158
void push(const LogItem &item)
Definition: Logger.cpp:232
~Logger()
Definition: Logger.cpp:53
static void open(std::string const &log_file)
Definition: Logger.cpp:227
void x_pause(bool f)
Definition: Logger.cpp:208
void x_stop()
Definition: Logger.cpp:196
void rotate()
Definition: Logger.cpp:118
Definition: strformat.h:383
Definition: Logger.cpp:29
Definition: Logger.cpp:37