在单独的日志文件中写入

Me *_*agi 6 c syslog

我试图在应用程序的单独日志文件中编写不同类型的条目.由于我试图找出的原因,所有条目都出现在所有日志文件中.我能做错什么?

我想只有关键条目进入/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
Run Code Online (Sandbox Code Playgroud)

我的示例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();
}
Run Code Online (Sandbox Code Playgroud)

ral*_*ght 4

这里的关键是(正如您可能已经猜到的那样)默认情况是在您选择的级别及其以下级别进行日志记录。您可以通过修改选择器比较来更改 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
Run Code Online (Sandbox Code Playgroud)

除了<, >, <=,之外>=,您还可以使用 来否定比较!。