/* * Copyright (c) 2012, Marius Barbu * Copyright (c) 2013, Paul Irofti */ #ifndef LOGGING_H__ #define LOGGING_H__ enum LogLevel { LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_WARN, LOG_LEVEL_ERROR, LOG_LEVEL_DISABLE, }; enum LogLevel log_level(char *id); void log_message_raw(enum LogLevel l, char *id, char *fmt, ...); void log_message(enum LogLevel l, char *where, int line, char *id, char *fmt, ...); #define log_info(id, ...) \ do { \ int enabled = log_level(id) <= LOG_LEVEL_INFO; \ if (enabled) { \ log_message(LOG_LEVEL_INFO, __FILE__, __LINE__, \ id, __VA_ARGS__); \ } \ } while (0) #define log_info_raw(id, ...) \ do { \ int enabled = log_level(id) <= LOG_LEVEL_INFO; \ if (enabled) { \ log_message_raw(LOG_LEVEL_INFO, \ id, __VA_ARGS__); \ } \ } while (0) #define log_debug(id, ...) \ do { \ int enabled = log_level(id) <= LOG_LEVEL_DEBUG; \ if (enabled) { \ log_message(LOG_LEVEL_DEBUG, __FILE__, __LINE__, \ id, __VA_ARGS__); \ } \ } while (0) #define log_debug_raw(id, ...) \ do { \ int enabled = log_level(id) <= LOG_LEVEL_DEBUG; \ if (enabled) { \ log_message_raw(LOG_LEVEL_DEBUG, \ id, __VA_ARGS__); \ } \ } while (0) #define log_warn(id, ...) \ log_message(LOG_LEVEL_WARN, __FILE__, __LINE__, \ id, __VA_ARGS__) #define log_warn_raw(id, ...) \ log_message_raw(LOG_LEVEL_WARN, \ id, __VA_ARGS__) #define log_error(id, ...) \ log_message(LOG_LEVEL_ERROR, __FILE__, __LINE__, \ id, __VA_ARGS__) #define log_error_raw(id, ...) \ log_message(LOG_LEVEL_ERROR, \ id, __VA_ARGS__) #endif /* LOGGING_H__ */