|
37 | 37 |
|
38 | 38 | enum LogLevel {
|
39 | 39 | DEBUG = 0,
|
40 |
| - WARNING = 1, |
41 |
| - ERROR = 2 |
| 40 | + INFO = 1, |
| 41 | + WARNING = 2, |
| 42 | + ERROR = 3 |
42 | 43 | };
|
43 | 44 |
|
44 | 45 | static inline const char*
|
45 | 46 | logLevelToStr(LogLevel lvl)
|
46 | 47 | {
|
47 | 48 | switch (lvl) {
|
48 | 49 | case DEBUG : return "DEBUG";
|
49 |
| - case WARNING : return "WARNING"; |
| 50 | + case INFO : return "INFO "; |
| 51 | + case WARNING : return "WARN "; |
50 | 52 | case ERROR : return "ERROR";
|
| 53 | + default : return "UNDEF"; |
51 | 54 | }
|
52 | 55 | assert(0 && "Unknown log level");
|
53 | 56 | return "Unknown log level";
|
@@ -99,6 +102,15 @@ inline Logger gLogger(DEBUG);
|
99 | 102 | inline Logger gLogger(ERROR);
|
100 | 103 | #endif
|
101 | 104 |
|
102 |
| -#define LOG_DEBUG(...) gLogger.log(std::cout, DEBUG, __FILE__, __LINE__, __VA_ARGS__) |
103 |
| -#define LOG_WARNING(...) gLogger.log(std::cout, WARNING, __FILE__, __LINE__, __VA_ARGS__) |
104 |
| -#define LOG_ERROR(...) gLogger.log(std::cerr, ERROR, __FILE__, __LINE__, __VA_ARGS__) |
| 105 | +template <class... ARGS> |
| 106 | +void |
| 107 | +log(LogLevel level, const char *file, int line, ARGS&& ...args) |
| 108 | +{ |
| 109 | + gLogger.log(level == ERROR ? std::cerr : std::cout, |
| 110 | + level, file, line, std::forward<ARGS>(args)...); |
| 111 | +} |
| 112 | + |
| 113 | +#define LOG_DEBUG(...) log(DEBUG, __FILE__, __LINE__, __VA_ARGS__) |
| 114 | +#define LOG_INFO(...) log(INFO, __FILE__, __LINE__, __VA_ARGS__) |
| 115 | +#define LOG_WARNING(...) log(WARNING, __FILE__, __LINE__, __VA_ARGS__) |
| 116 | +#define LOG_ERROR(...) log(ERROR, __FILE__, __LINE__, __VA_ARGS__) |
0 commit comments