将本地应用程序添加到从 /var/log/messages 中排除的 syslog

将本地应用程序添加到从 /var/log/messages 中排除的 syslog

我有一个应用程序,它记录到 syslog 工具 local1。我想配置 syslog 将所有 local1 消息发送到与 /var/log/messages 分开的日志文件——这很容易。但消息转到 /var/log/messages。有什么方法可以告诉 syslog 将 *.info 发送到 /var/log/messages 但排除 local1.info?(类似 *^loacl1.info ?)

系统日志.conf:

#kern.*                                                 /dev/console

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

authpriv.*                                              /var/log/secure

local0.notice;local0.debug;mail.*;mail.none;mail.info;local0.info /var/log/maillog

cron.*                                                  /var/log/cron

*.emerg                                                 *

uucp,news.crit                                          /var/log/spooler

local7.*                                                /var/log/boot.log

#My Custom App Logging
local1.*                                             /var/log/application.log

答案1

尝试更换

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

经过

*.info;mail.none;authpriv.none;cron.none;local1.!=info                /var/log/messages

这将记录匹配以下项的消息:任何具有信息级别的设施,且设施不是邮件设施,且设施不是 authpriv并且设施 local1 除级别为信息外

答案2

你应该使用

#My Custom App Logging
local1.*                                             /var/log/application.log
& ~

对于系统日志或

#My Custom App Logging
local1.*                                             /var/log/application.log
& stop

rsyslog 7+ 版本,以防止进一步处理日志消息。确保*.*记录到 /var/log/syslog的默认规则。

答案3

只是对@radius 答案的赞美

根据 rsyslog 文档 https://www.rsyslog.com/doc/v8-stable/configuration/filters.html

您可以使用逗号(“,”)运算符在一个语句中指定具有相同优先级模式的多个设施

我更喜欢使用下面的代码

*.info;mail, authpriv, cron.none;local1.!=info                /var/log/messages

顺便说一句,这将记录匹配的消息:任何具有级别信息及更高级别的设施,以将其限制为仅您可以使用的信息

您可以在每个优先级前面加上等号(“=”),以仅指定此单个优先级,而不指定上述任何优先级

*.=info;mail, authpriv, cron.none;local1.!=info                /var/log/messages

相关内容