无法使用log4crc配置文件

时间:2013-08-20 14:39:44

标签: policy log4c

我正在尝试使用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的情况下使用配置文件来实现日志记录?

3 个答案:

答案 0 :(得分:0)

我也是log4c的新手。但是我从你的log4c配置文件中理解了什么 您有两次类别名称"log4c.examples.helloworld"。所以当你写log4c_category_get("log4c.examples.helloworld")时,它将从CRC文件中检查并获得appender名称。 与log4c.examples.helloworld对应的追加者名称为"stdout""/home .. /..filename.txt"。第一个是正确的,因为它将输出到屏幕。最后一个是不合适的。不要在那里指定文件路径。将名称/字符串放入appender名称。然后在appender namelogdir value,您可以在其中指定创建文件的目录。

答案 1 :(得分:0)

检查你的log4crc文件是否包含在helloworld目录中

答案 2 :(得分:0)

删除版本号对我来说非常有用:

android:focusable="false"