2010年12月7日星期二

log4c库使用和配置文件的写法

1、log4c_category_get函数
     get特征,可从xml中获得多个category,如:
     (1)搜six13log.log.app.application1会包含xml中有的six13log.log.app.application1、six13log.log.app、six13log.log等category,以.为分隔符号,向上包含。
     (2)搜six13log.log.app,并不会包含six13log.log.app.application1,也就是不向下包含。

2、log4c有自己的文件输出方式,可指定目录、文件个数、文件大小、文件名前缀、输出方式等。如果大小完了,log4c会删除全部,然后重新开始写。

3、用户可以写自己的append和format。官网的程序包中有两个例子,这样我们可以将日志输出到syslog和socket中。

4、const log4c_location_info_t locinfo = LOG4C_LOCATION_INFO_INITIALIZER(NULL); 来定义日志中的函数名、行数信息。

log4c配置文件:



<?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>

<category name="root" priority="notice"/>
        <category name="six13log.log" priority="error" appender="stdout" />

<rollingpolicy name="myrollingpolicy" type="sizewin" maxsize="1024" maxnum="10" />
<!-- log4c库中定义的向文件输出的appender,指定路径,前缀等 -->
<appender name="myrollingfileappender" type="rollingfile" logdir="." prefix="myprefix" layout="dated" rollingpolicy="myrollingpolicy" />

<!-- log4c自带appender -->
<appender name="stdout" type="stream" layout="basic"/>
<appender name="stderr" type="stream" layout="dated"/>
<appender name="syslog" type="syslog" layout="basic"/>

<!-- 例子example_appenders.c中扩展的appender -->
<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"/>

<!-- log4c自带的appender -->
<layout name="basic" type="basic"/>
<layout name="dated" type="dated"/>

<!-- 例子example_formatters.c扩展的输出格式 -->
<layout name="catlayout" type="s13_cat"/>
<layout name="xmllayout" type="s13_xml"/>
        <layout name="none" type="s13_none"/>
<layout name="userlayout" type="s13_userloc"/>

<!-- proiority级别为debug,C代码中小于debug的日志都会输出 -->
<category name="six13log.log.app.application1" priority="debug" appender="cat_stderr" />
<category name="six13log.log.app.application2" priority="debug" appender="cat_stderr" />
<category name="six13log.log.app.application3" priority="debug" appender="user_stderr" />
<category name="six13log.log.app" priority="debug" appender="myrollingfileappender" />      
</log4c>

参考博客:
http://www.cnblogs.com/jyli/archive/2010/02/11/1660606.html
http://blog.csdn.net/CppExplore/archive/2009/09/26/4596235.aspx

没有评论:

发表评论