44
55#include " ../Config.h"
66
7- enum class LogLevel {
8- DEBUG,
9- INFO,
10- WARN,
11- ERROR,
12- NONE
13- };
7+ enum class LogLevel { DEBUG, INFO, WARN, ERROR, NONE };
148
159extern LogLevel currentLogLevel;
1610
@@ -24,13 +18,20 @@ class Logger {
2418};
2519
2620#ifdef DEBUG_MODE
27- #define LOG_DEBUG (fmt, ...) Logger::log(LogLevel::DEBUG, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
28- #define LOG_INFO (fmt, ...) Logger::log(LogLevel::INFO, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
29- #define LOG_WARN (fmt, ...) Logger::log(LogLevel::WARN, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
30- #define LOG_ERROR (fmt, ...) Logger::log(LogLevel::ERROR, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
21+ #define LOG_DEBUG (fmt, ...) Logger::log(LogLevel::DEBUG, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
22+ #define LOG_INFO (fmt, ...) Logger::log(LogLevel::INFO, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
23+ #define LOG_WARN (fmt, ...) Logger::log(LogLevel::WARN, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
24+ #define LOG_ERROR (fmt, ...) Logger::log(LogLevel::ERROR, __FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__)
25+
26+ // Conditional Logging
27+ #define LOG_DEBUG_IF (cond, fmt, ...) \
28+ do { \
29+ if (cond) LOG_DEBUG (fmt, ##__VA_ARGS__); \
30+ } while (0 )
3131#else
32- #define LOG_DEBUG (fmt, ...) ((void )0 )
33- #define LOG_INFO (fmt, ...) ((void )0 )
34- #define LOG_WARN (fmt, ...) ((void )0 )
35- #define LOG_ERROR (fmt, ...) ((void )0 )
32+ #define LOG_DEBUG (fmt, ...) ((void )0 )
33+ #define LOG_INFO (fmt, ...) ((void )0 )
34+ #define LOG_WARN (fmt, ...) ((void )0 )
35+ #define LOG_ERROR (fmt, ...) ((void )0 )
36+ #define LOG_DEBUG_IF (cond, fmt, ...) ((void )0 )
3637#endif
0 commit comments