/* vim: ts=4 sw=4 sts=4 ff=unix fenc=utf-8 : * ===================================================================== * sc_logger.h * Copyright (c) 2003 - 2011 sys0tem * LICENSE : * LGPL (GNU Lesser General Public License - Version 3,29 June 2007) * http://www.gnu.org/copyleft/lesser.html * or * EPL (Eclipse Public License - v1.0) * http://www.eclipse.org/legal/epl-v10.html * ===================================================================== * * 使用例 * 最大1MBの2世代管理のログを使用する。 * * ~初期設定~ * SC_Logger_Config config; * config.level = LEVEL_ERR; * config.type = LOGGER_FILE; * config.size = 1 * 1024 * 1024; * config.gen = 2; * config.name = "sc.log"; * * SC_Logger_setLogConfig("", &config); * * config.level = LEVEL_DEBUG; * SC_Logger_setLogConfig("src/sc_logger.c", &config); * * * ~LOGを出力する~ * SC_Logger_log(__FILE__, LOGGER_DEBUG, "can't read file %s", fileName); * * ~後処理~ * SC_Logger_cleanup(); */ #ifndef __SC_LOGGER_H__ #define __SC_LOGGER_H__ typedef enum { LOGGER_FATAL = 0x0001, /*< システム使用不可 */ LOGGER_ALERT = 0x0002, /*< 直ちに対応が必要 */ LOGGER_CRIT = 0x0004, /*< 危険な状態 */ LOGGER_ERR = 0x0008, /*< エラーの状態 */ LOGGER_WARNING = 0x0010, /*< ワーニングの状態 */ LOGGER_NOTICE = 0x0020, /*< 通常だが重要な状態 */ LOGGER_INFO = 0x0040, /*< インフォメーション */ LOGGER_DEBUG = 0x0080, /*< デバッグメッセージ */ } SC_LogLevel; typedef enum { LOGGER_STDOUT = 0x00, LOGGER_STDERR = 0x01, LOGGER_MEMORY = 0x02, LOGGER_FILE = 0x04, LOGGER_SYSLOG = 0x10, } SC_LogOutputType; typedef struct { SC_LogLevel level; /*< レベル */ SC_LogOutputType type; /*< タイプ */ size_t size; /*< サイズ */ int gen; /*< 世代数 */ const char* name; /*< 名前 */ } SC_Logger_Config; #ifdef SC_DEBUG #define SC_Debug(fmt, ...) \ SC_Logger_log_(__FILE__, LOGGER_DEBUG, __FILE__, __LINE__, fmt, __VA_ARGS__) #else #define SC_Debug(fmt, ...) #endif /* SC_DEBUG */ #define SC_Logger_log(category, level, fmt, ...) \ SC_Logger_log_(category, level, __FILE__, __LINE__, fmt, __VA_ARGS__) #ifdef __cplusplus extern "C" { #endif bool SC_Logger_setLogConfig(const char* category, SC_Logger_Config* config); void SC_Logger_log_(const char* category, SC_LogLevel level, const char* file, int line, const char* format, ...); void SC_Logger_cleanup(void); #ifdef __cplusplus } #endif #endif /* __SC_LOGGER_H__ */