【问题标题】:Writing in separate log files写入单独的日志文件
【发布时间】:2013-10-02 08:25:34
【问题描述】:

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

我只希望关键条目进入 /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();
}

【问题讨论】:

    标签: c syslog


    【解决方案1】:

    这里的关键是(您可能已经猜到了)默认是在您选择的级别和低于它的级别进行日志记录。您可以通过修改选择器比较在 syslog 配置文件中更改它。如果不指定默认是&gt;=,你要=

    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
    

    除了&lt;&gt;&lt;=&gt;=,您还可以使用!来否定比较。

    【讨论】:

    • 您好,可以分享一下配置文件吗?
    • 什么配置文件?那里的条目要放入您的系统日志配置中。我在 /etc/rsyslog.d/90-local.conf 中有我的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多