我使用的是最新版本的LOG4C,为什么我不能控制屏幕上的信息、警告、调试语句?我使用过LOG4J,它似乎很容易控制是否调试,信息,警告消息出来。
这是我的测试代码:
#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 $ 我在这里做错什么了吗?
(如有任何帮助或建议,不胜感激;)
林顿
发布于 2011-12-28 04:20:29
把这作为一个答案,因为,如果最初的提问者在过去的九个月中没有这样做,他们可能没有打算。
这种行为与log4j完全相同。配置的调试级别是将启用以供输出的消息的最低级别。换句话说,如果选择error,您将得到error和fatal消息。
来自log4j在线手册
基本选择规则:如果P大于或等于Q,则启用具有(赋值或继承,视情况适当)级别Q的记录器中P级的日志请求。
https://stackoverflow.com/questions/5055842
复制相似问题