本文提供LOG4C的使用接口文件
LOG_START() : //初始化LOG4C
LOG_STOP(): //關閉LOG4C
LOG_FATAL(); //記錄fata信息
LOG_ERROR(); //記錄error信息
LOG_WARN();
LOG_INFO(); //記錄info信息
LOG_DEBUG(); //調試debug信息
實現方式:
#define LOG_START() \
do {\if (log4c_init())\
{\
printf("log4c init failed! you can not log with log4c!\n");\
}\
} while (0)
#define LOG_STOP() \
do {\
if (log4c_fini())\
{\
printf("log4c fini failed!\n");\
}\
} while(0)
#define LOGGER_CATEGORY_FILE "file.info" //定義文件CATEGORY
#define LOGGER_CATEGORY_STDOUT "stdout.debug" //終端CATEGORY
#define LOG_BASE_D(sLogMsg) \
char tmpLogLine[VWLITE_LOGGER_MAX_TMPLOGLINE] = {0};
\
snprintf(tmpLogLine, VWLITE_LOGGER_MAX_TMPLOGLINE, "[%s:%d] %s", \
__FILE__, __LINE__, sLogMsg);
#define LOG_BASE_PRIORITY_D(my_category, priority, sLogMsg, args...) \
do {\
LOG_BASE_D(sLogMsg);\
log4c_category_log(my_category, priority, tmpLogLine, ##args);\
} while(0)
/*區分信息是寫到文件中還是終端*/
#define LOG_FATAL(sLogMsg, args...) LOG_BASE_PRIORITY_D(log4c_category_get(LOGGER_CATEGORY_FILE), LOG4C_PRIORITY_FATAL, sLogMsg, ##args)
#define LOG_ERROR(sLogMsg, args...) LOG_BASE_PRIORITY_D(log4c_category_get(LOGGER_CATEGORY_FILE), LOG4C_PRIORITY_ERROR, sLogMsg,##args)
#define LOG_INFO(sLogMsg, args...) LOG_BASE_PRIORITY_D(log4c_category_get(LOGGER_CATEGORY_FILE), LOG4C_PRIORITY_INFO, sLogMsg, ##args)
#define LOG_WARN(sLogMsg, args...) LOG_BASE_PRIORITY_D(log4c_category_get(LOGGER_CATEGORY_FILE), LOG4C_PRIORITY_WARN, sLogMsg, ##args)
#define LOG_DEBUG(sLogMsg, args...) LOG_BASE_PRIORITY_D(log4c_category_get(LOGGER_CATEGORY_STDOUT), LOG4C_PRIORITY_DEBUG, sLogMsg, ##args)
===========================================================================================================================
以下log4c 的配置文件log4crc
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE log4c SYSTEM "">
<log4c version="1.2.1">
<config>
<bufsize>0</bufsize>
<debug level="2"/>
<nocleanup>0</nocleanup>
<reread>1</reread>
</config>
<!-- edit category here --> <!-- priority ={trace, debug, info, warn, error, fatal} -->
<!-- <category name="stdout" priority="trace" appender="stdout"/> -->
<category name="stdout.debug" priority="trace" appender="stdout"/>
<category name="stdout.warn" priority="trace" appender="stdout"/>
<category name="stdout.trace" priority="trace" appender="stdout"/>
<category name="file.info" priority="info" appender="myrolling_info"/>
<category name="file.trace" priority="trace" appender="myrolling_file"/>
<category name="file.error" prioritr="error" appender="myrolling_err_fatal"/>
<!-- edit rollingpolicy -->
<rollingpolicy name="policy_err_fatal" type="sizewin" maxsize="1048576" maxnum="2" />
<rollingpolicy name="policy_info" type="sizewin" maxsize="1048576" maxnum="5" />
<rollingpolicy name="policy_file" type="sizewin" maxsize="1048576" maxnum="3" />
<!-- edit appender -->
<appender name="myrolling_info" type="rollingfile" logdir="/var/log/vwlite/" prefix="vwlog" layout="dated_l" rollingpolicy="policy_info" />
<appender name="stdout" type="stream" layout="basic"/>
<appender name="stderr" type="stream" layout="basic"/>
<appender name="syslog" type="syslog" layout="basic"/>
<appender name="s13file" type="s13_file" layout="basic"/>
<appender name="plain_stderr" type="s13_stderr" layout="none"/>
<appender name="cat_stderr" type="s13_stderr" layout="catlayout"/>
<appender name="xml_stderr" type="s13_stderr" layout="xmllayout"/>
<appender name="user_stderr" type="s13_stderr" layout="userlayout"/>
<!-- edit layout -->
<layout name="basic" type="basic"/>
<layout name="dated" type="dated"/>
<layout name="dated_l" type="dated_l"/>
<layout name="catlayout" type="s13_cat"/>
<layout name="xmllayout" type="s13_xml"/>
<layout name="none" type="s13_none"/>
<layout name="userlayout" type="s13_userloc"/>
</log4c>