73 #define LOG_LEVEL LOG_INFO 
   82 #  define LOG_WRITE(level, fmt, ...) log_write((level), "%s: "fmt, LOG_UNIT, ##__VA_ARGS__)
 
   84 #  define LOG_WRITE(level, ...) log_write((level), __VA_ARGS__) 
   91 #define LOG(level, ...) do { \ 
   92         _Pragma("clang diagnostic push") \
 
   93         _Pragma("clang diagnostic ignored \"-Wtautological-compare\"") \
 
   94         if ((level) <= LOG_LEVEL) LOG_WRITE((level), __VA_ARGS__); } while (0U) \
 
   95         _Pragma("clang diagnostic pop")
 
   97 #define LOG(level, ...) do { \ 
   98         if ((level) <= LOG_LEVEL) LOG_WRITE((level), __VA_ARGS__); } while (0U) 
  105 #define LOG_ERROR(...) LOG(LOG_ERROR, __VA_ARGS__)       
  106 #define LOG_WARNING(...) LOG(LOG_WARNING, __VA_ARGS__)   
  107 #define LOG_INFO(...) LOG(LOG_INFO, __VA_ARGS__)         
  122 #define LOG_DEBUG(...) LOG(LOG_DEBUG, __VA_ARGS__) 
  126 #include "log_module.h" 
  133 #define log_write(level, ...) printf(__VA_ARGS__) 
#define LOG_INFO(...)
for the curious
 
#define LOG_DEBUG(...)
Print a log message, if LOG_LEVEL is defined to be at least LOG_DEBUG
 
@ LOG_NONE
Lowest log level, will output nothing.
 
@ LOG_ALL
print everything
 
#define LOG_ERROR(...)
log an error
 
#define LOG_WARNING(...)
log a warning