系统日志写入一般文件而不是特定文件

系统日志写入一般文件而不是特定文件

我正在运行 Ubuntu 和 Postgresql 9。

我已经启用 postgresql 来记录到 syslog,并将以下指令添加到配置文件中:

 syslog_facility = 'local0'". 

我尝试配置 syslog 以将它们记录到单独的文件中,但该文件已归档。我更新了 /etc/syslog.conf,使其包含(请参阅最后一行的 postgresql 指令)

auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages
*.emerg                         *
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole
local0.*                -/var/log/pgsql

我已经使用“/etc/init.d/sysklogd restart”和“restart rsyslog”重新启动了 syslog。

当重新加载 postgresql 时,消息将附加到 /var/log/messages 和 /var/log/syslog ...而不是我配置 syslog 使用的正确文件......

在另一台装有相同版本 Postgresql 的 Debian 机器上也可以正常工作......

有任何想法吗?

  • 我的 syslog 配置文件有问题吗?
  • 我应该在 postgresql.conf 中添加其他内容吗?
  • 我可以检查 syslog 是否确实使用我更改的配置文件吗?

答案1

我觉得你的postgresql.conf文件中有一个拼写错误。请确保你确实使用了

syslog_facility = 'local0'

此外,旧的 syslogd 要求在配置文件中使用硬制表符而不是空格,因此请确保您实际上没有使用空格,或者您的编辑器没有将制表符转换为空格(例如 vim 中的 expandtab 选项)。

您还提到了旧的 syslogdrsyslog,所以请检查你实际使用的是哪一个。rsyslog 的配置文件设计为向后兼容 syslogd,但是使用不同的文件。因此,如果您使用 rsylog,则请添加您的日志记录行/etc/rsyslog.conf

为了防止这些消息也出现在您的设备中,/var/log/messages您需要明确过滤掉该功能。为此,请将您的消息配置修改为:

*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none;\
    local0.none          -/var/log/messages

这句话的意思是,“不要将任何严重性级别从 local0 设施写入此文件。”或者,实际上排除任何内容local0.*

相关内容