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

将此作为答案,因为如果原始询问者在过去九个月内没有这样做,他们可能不打算这样做。

此行为与 log4j 相同。配置的调试级别是将​​启用输出的消息的最低级别。换句话说,如果您选择error,您将收到error AND fatal消息。

log4j 在线手册

基本选择规则:如果 P 大于或等于 Q,则在具有(分配或继承,以适当者为准)级别 Q 的记录器中启用级别 P 的日志请求。

于 2011-12-28T04:20:29.853 回答