基本的 rsyslog 配置

Basic rsyslog configuration

我有程序记录到 Syslog,我想将这些消息拆分到单独的文件中。

我希望 MyApp 生成的所有消息都发送到 /var/log/my_app.log,任何 warn 或更严重的消息也发送到 /var/log/my_app.err

我不希望邮件像现在这样在 /var/log/syslog 中结束。

我创建了一个新的 rsyslog conf 文件 /etc/rsyslog.d/10-my_app.conf,其中我有:

if $programname == 'MyApp'
then
{
        if $pri <= 4
        then
        {
                /var/log/my_app.err
        }

        /var/log/my_app.log
        & stop
}

但它只是部分起作用。所有消息都在 my_app.log 中结束,一半的消息仍然出现在 syslog 中,而 my_app.err

中什么也没有出现

我找到了解决方案:

if $programname == 'MyApp'
then
{
    *.warning /var/log/my_app.err
    *.* /var/log/my_app.log
    & stop
}

一半的问题是我的配置文件被加载之后另一个文件在我有机会删除它们之前将我的行记录到/var/log/syslog,所以我需要更改一些文件名来解决这个问题。