我正在尝试使用log4c进行C应用程序日志记录。为了实现滚动策略,我使用了log4c滚动文件API。我从Log4C开发人员那里了解到,可以通过编辑配置文件(log4crc)来实现滚动策略。我尝试将appender名称编辑为配置文件中的日志文件路径。但应用程序运行时没有记录。谁能告诉我如何使用log4c实现滚动日志机制?
请参阅我的helloworld应用程序示例和下面的配置文件:
#include<stdio.h>
#include"log4c.h"
int main(int argc, char** argv)
{
int rc = 0;
log4c_category_t* mycat = NULL;
if (log4c_init()){
printf("log4c_init() failed");
rc = 1;
}else{
mycat = log4c_category_get("log4c.examples.helloworld");
log4c_category_log(mycat, LOG4C_PRIORITY_ERROR, "Hello World!");
/* Explicitly call the log4c cleanup routine */
if ( log4c_fini()){
printf("log4c_fini() failed");
}
}
return 0;
}
配置文件如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE log4c SYSTEM "">
<log4c version="1.2.3">
<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" />
<appender name="myrollingfileappender" type="rollingfile" logdir="." prefix="myprefix" layout="dated" rollingpolicy="myrollingpolicy" />
<appender name="stdout" type="stream" layout="basic"/>
<appender name="stderr" type="stream" layout="dated"/>
<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"/>
<layout name="basic" type="basic"/>
<layout name="dated" type="dated"/>
<layout name="catlayout" type="s13_cat"/>
<layout name="xmllayout" type="s13_xml"/>
<layout name="none" type="s13_none"/>
<layout name="userlayout" type="s13_userloc"/>
<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" />
<category name="log4c.examples.helloworld" priority="debug" appender="stdout"/>
<category name="log4c.examples.helloworld" priority="debug" appender="/home .. /..filename.txt"/>
</log4c>
我编辑了配置文件中的最后两行用于记录。 请告诉我log4crc配置文件有什么问题,以及如何在不使用log4c滚动策略API的情况下使用配置文件来实现日志记录?
答案 0 :(得分:0)
我也是log4c的新手。但是我从你的log4c配置文件中理解了什么
您有两次类别名称"log4c.examples.helloworld"
。所以当你写log4c_category_get("log4c.examples.helloworld")
时,它将从CRC文件中检查并获得appender名称。
与log4c.examples.helloworld
对应的追加者名称为"stdout"
和"/home .. /..filename.txt"
。第一个是正确的,因为它将输出到屏幕。最后一个是不合适的。不要在那里指定文件路径。将名称/字符串放入appender名称。然后在appender name
中logdir value
,您可以在其中指定创建文件的目录。
答案 1 :(得分:0)
检查你的log4crc文件是否包含在helloworld目录中
答案 2 :(得分:0)
删除版本号对我来说非常有用:
android:focusable="false"