trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
logging.hpp
1 #pragma once
2 #include <cstdio>
3 
4 namespace util {
5 
6 enum LogLevel {
7  LevelFatal = 0,
8  LevelError = 1,
9  LevelWarn = 2,
10  LevelInfo = 3,
11  LevelDebug = 4,
12  LevelTrace = 5
13 };
14 
15 extern LogLevel gLogLevel;
16 inline LogLevel GetLogLevel() {return gLogLevel;}
17 
18 
19 #define FATAL_PREFIX "\x1b[31m[FATAL] "
20 #define ERROR_PREFIX "\x1b[31m[ERROR] "
21 #define WARN_PREFIX "\x1b[33m[WARN] "
22 #define INFO_PREFIX "[INFO] "
23 #define DEBUG_PREFIX "\x1b[32m[DEBUG] "
24 #define TRACE_PREFIX "\x1b[34m[TRACE] "
25 #define LOG_SUFFIX "\x1b[0m\n"
26 
27 #define LOG_FATAL(msg, ...) if (util::GetLogLevel() >= util::LevelFatal) {printf(FATAL_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
28 #define LOG_ERROR(msg, ...) if (util::GetLogLevel() >= util::LevelError) {printf(ERROR_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
29 #define LOG_WARN(msg, ...) if (util::GetLogLevel() >= util::LevelWarn) {printf(WARN_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
30 #define LOG_INFO(msg, ...) if (util::GetLogLevel() >= util::LevelInfo) {printf(INFO_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
31 #define LOG_DEBUG(msg, ...) if (util::GetLogLevel() >= util::LevelDebug) {printf(DEBUG_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
32 #define LOG_TRACE(msg, ...) if (util::GetLogLevel() >= util::LevelTrace) {printf(TRACE_PREFIX); printf(msg, ##__VA_ARGS__); printf(LOG_SUFFIX);}
33 
34 }