1

C アプリケーションのロギングに log4c を使用しようとしています。ローリング ポリシーを実装するために、log4c ローリング ファイル API を使用しました。Log4C 開発者ガイドから、構成ファイル (log4crc) を編集することでローリング ポリシーを実現できることがわかりました。アペンダー名を構成ファイルのログファイルパスに編集してみました。しかし、アプリケーションはログなしで実行されます。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>

ロギング用に構成ファイルの最後の 2 行を編集しました。log4crc 構成ファイルの何が問題なのか、log4c ローリング ポリシー API を使用せずに構成ファイルを使用してログを実装する方法を教えてください。

4

3 に答える 3

0

私はlog4cも初めてです。しかし、log4c 構成ファイルから私が理解していることは、カテゴリ名が"log4c.examples.helloworld"2 回あります。したがって、書き込むときにlog4c_category_get("log4c.examples.helloworld")CRCファイルからチェックして、アペンダー名を取得します。log4c.examples.helloworldアペンダー名に対応するのは"stdout""/home .. /..filename.txt"です。画面に出力するので、最初のものは適切です。最後のは不適切です。そこにファイルパスを指定しないでください。アペンダー名に対応する名前/文字列を入れます。そして、ファイルが作成されるディレクトリを指定できる場所がありますappender namelogdir value

于 2014-12-20T09:42:09.613 に答える