我正在尝试在应用程序的单独日志文件中编写不同类型的条目。由于我试图找出的原因,所有条目都出现在所有日志文件中。我能做错什么?
我想只有关键条目进入/tmp/log/critical.log并调试条目进入/tmp/log/debug.log文件,而所有的进入者都可以进入/tmp/log/all.log日志文件
以下是/etc/rsyslog.conf文件中的条目
local0.* /tmp/log/all.log
local0.alert /tmp/log/alert.log
local0.crit /tmp/log/critical.log
local0.debug /tmp/log/debug.log
local0.emerg /tmp/log/emergency.log
local0.err /tmp/log/error.log
local0.info /tmp/log/info.log
local0.notice /tmp/log/notice.log
local0.warning /tmp/log/warning.log
我的示例c程序编写syslog条目......
#include<syslog.h>
main()
{
openlog("myapp",LOG_CONS|LOG_PID|LOG_NDELAY,LOG_LOCAL0);
syslog(LOG_EMERG|LOG_LOCAL0,"Emergency",getuid());
syslog(LOG_ALERT|LOG_LOCAL0,"Alert",getuid());
syslog(LOG_CRIT|LOG_LOCAL0,"Critical",getuid());
syslog(LOG_ERR|LOG_LOCAL0,"Error",getuid());
syslog(LOG_WARNING|LOG_LOCAL0,"Warning",getuid());
syslog(LOG_NOTICE|LOG_LOCAL0,"Notice",getuid());
syslog(LOG_INFO|LOG_LOCAL0,"Information",getuid());
syslog(LOG_DEBUG|LOG_LOCAL0,"Debug",getuid());
closelog();
}
答案 0 :(得分:3)
这里的关键是(你可能已经猜到了)默认是记录你选择的级别和它下面的级别。您可以通过修改选择器比较在syslog配置文件中更改它。如果未指定,则默认值为>=
,您需要=
:
local0.* /tmp/log/all.log
local0.=alert /tmp/log/alert.log
local0.=crit /tmp/log/critical.log
local0.=debug /tmp/log/debug.log
local0.=emerg /tmp/log/emergency.log
local0.=err /tmp/log/error.log
local0.=info /tmp/log/info.log
local0.=notice /tmp/log/notice.log
local0.=warning /tmp/log/warning.log
除了<
,>
,<=
,>=
之外,您还可以使用!
取消比较。