首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用log4crc配置文件

无法使用log4crc配置文件
EN

Stack Overflow用户
提问于 2013-08-20 22:39:44
回答 3查看 1.4K关注 0票数 1

我正在尝试使用log4c来记录我的C应用程序日志。为了实现滚动策略,我使用了log4c滚动文件API。我从Log4C开发人员指南中了解到,滚动策略可以通过编辑配置文件(log4crc)来实现。我尝试将附加器名称编辑为配置文件中的日志文件路径。但是应用程序在没有日志记录的情况下运行。谁能告诉我如何使用log4c实现滚动日志机制?

请参阅我的helloworld应用程序示例和下面的配置文件:

代码语言:javascript
复制
#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;
}

配置文件如下所示:

代码语言:javascript
复制
<?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滚动策略apis的情况下使用配置文件来实现日志记录?

EN

回答 3

Stack Overflow用户

发布于 2014-12-20 17:42:10

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

票数 0
EN

Stack Overflow用户

发布于 2015-01-22 16:45:24

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

票数 0
EN

Stack Overflow用户

发布于 2017-01-28 02:28:02

完全删除版本号对我来说是有效的:

代码语言:javascript
复制
Change 
    <log4c version="1.2.3">
to
    <log4c>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18337926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档