C言語でログ出力のレベル分け

  • 下記のようなマクロを使用してログ出力のレベルを制御する。
  • さらに細かく、FATAL(致命的なエラー)、ERROR(エラー)、WARN(警告)、INFO(情報)、DEBUG(デバッグ情報)、TRACE(トレース情報)のように分けてもよい。
// デバッグ出力
#define DEBUG_LOG_LEVEL  2

#if DEBUG_LOG_LEVEL >= 4
#define DEBUG_LOG_TRACE(fmt, ...) printf("[TRACE]" fmt, ##__VA_ARGS__)
#else
#define DEBUG_LOG_TRACE(fmt, ...) /* 何もしない */
#endif
#if DEBUG_LOG_LEVEL >= 3
#define DEBUG_LOG_DEBUG(fmt, ...) printf("[DEBUG]" fmt, ##__VA_ARGS__)
#else
#define DEBUG_LOG_DEBUG(fmt, ...) /* 何もしない */
#endif
#if DEBUG_LOG_LEVEL >= 2
#define DEBUG_LOG_INFO(fmt, ...) printf("[INFO]" fmt, ##__VA_ARGS__)
#else
#define DEBUG_LOG_INFO(fmt, ...) /* 何もしない */
#endif
#if DEBUG_LOG_LEVEL >= 1
#define DEBUG_LOG_ERROR(fmt, ...) printf("[ERROR]" fmt, ##__VA_ARGS__)
#else
#define DEBUG_LOG_ERROR(fmt, ...) /* 何もしない */
#endif