1

LOG4C の最新バージョンを使用していますが、画面に表示される INFO、WARN、DEBUG ステートメントを制御できない理由が少しわかりません。LOG4Jを使ってみたのですが、DEBUG、INFO、WARNのメッセージが出るかどうかの制御がしやすそうでした。

ここに私のテストコードがあります:

#include <stdio.h>
#include <stdlib.h>
#include "log4c.h"

int main(){
  int rc = 0;
  log4c_category_t* mycat = NULL;

  if (log4c_init()){
    printf("log4c_init() failed");
    rc = 1;
  }else{
      mycat = log4c_category_get("test.program");          
      log4c_category_log(mycat, LOG4C_PRIORITY_ERROR, "Some ERROR message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_INFO, "Some INFO message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_WARN, "Some WARN message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_ALERT, "Some ALERT message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_CRIT, "Some CRITICAL message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_FATAL, "Some FATAL message...!");
      log4c_category_log(mycat, LOG4C_PRIORITY_NOTICE, "Some NOTICE message...!");

    if ( log4c_fini()){
      printf("log4c_fini() failed");
    }
  }
  return 0;
}

そして、これが実行中のアプリと同じフォルダーにある「log4rc」ファイルです..

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE log4c SYSTEM "">

<log4c version="1.2.1">

    <config>
        <bufsize>0</bufsize>
        <debug level="INFO3"/>
        <nocleanup>0</nocleanup>
        <reread>1</reread>
    </config>       
     <category name="test.program" priority="info" appender="stdout"/> 
</log4c>

上記でわかるように、「情報」に設定しましたが、プログラムを実行すると、画面にすべてが表示されるのはなぜですか?

lynton@lynton-Latitude-E5400 ~/Desktop/log4c/LogTest/LogTest $ ./LogTest 
[stdout] ERROR    test.program - Some ERROR message...!
[stdout] INFO     test.program - Some INFO message...!
[stdout] WARN     test.program - Some WARN message...!
[stdout] ALERT    test.program - Some ALERT message...!
[stdout] CRIT     test.program - Some CRITICAL message...!
[stdout] FATAL    test.program - Some FATAL message...!
[stdout] NOTICE   test.program - Some NOTICE message...!
lynton@lynton-Latitude-E5400 ~/Desktop/log4c/LogTest/LogTest $ 

ここで何か間違ったことをしていますか?

どんな助けやアドバイスも大歓迎です;-)

リントン

4

1 に答える 1

1

元の質問者が過去 9 か月間これを行っていない場合、おそらく意図していないため、これを回答として入れます。

この動作は log4j と同じです。構成されたデバッグ レベルは、出力が有効になるメッセージの最小レベルです。つまり、 を選択すると、 ANDメッセージが返されerrorます。error fatal

log4jオンラインマニュアルから:

基本的な選択規則:レベル Q の (割り当てられた、または継承された、適切な方の) ロガーのレベル P のログ要求は、P が Q 以上の場合に有効になります。

于 2011-12-28T04:20:29.853 に答える