1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #ifndef LOG_H_ #define LOG_H_
#define __LOG_SWITCH
#ifdef __LOG_SWITCH #define LOG_TEMPLATE(format, ...) printf(format, ##__VA_ARGS__) #else #define LOG_TEMPLATE(format, ...) #endif
enum LOG_LEVEL { LOG_LEVEL_OFF = 0, LOG_LEVEL_FATAL, LOG_LEVEL_ERROR, LOG_LEVEL_WARN, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG };
enum LOG_LEVEL log_level = LOG_LEVEL::LOG_LEVEL_DEBUG;
#define LOG_FATAL(format, ...) \ do { \ if (log_level >= LOG_LEVEL_FATAL) \ LOG_TEMPLATE("[FATAL FILE:%s LINE:%d FUNC:%s] " format "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); \ } while(0)
#define LOG_ERROR(format, ...) \ do { \ if (log_level >= LOG_LEVEL_ERROR) \ LOG_TEMPLATE("[ERROR FILE:%s LINE:%d FUNC:%s] " format "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); \ } while(0)
#define LOG_WARN(format, ...) \ do { \ if (log_level >= LOG_LEVEL_WARN) \ LOG_TEMPLATE("[WARN FILE:%s LINE:%d FUNC:%s] " format "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); \ } while(0)
#define LOG_INFO(format, ...) \ do { \ if (log_level >= LOG_LEVEL_INFO) \ LOG_TEMPLATE("[INFO FILE:%s LINE:%d FUNC:%s] " format "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); \ } while(0)
#define LOG_DEBUG(format, ...) \ do { \ if (log_level >= LOG_LEVEL_DEBUG) \ LOG_TEMPLATE("[DEBUG FILE:%s LINE:%d FUNC:%s] " format "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); \ } while(0)
#endif
|