我有一个自定义守护进程,它将日志发送到 rsyslog 设施“local1”,具有两个安全级别 - “info”和“debug”。我需要将“info”日志写入 /var/log/info,将“debug”日志写入 /var/log/debug。
我编辑了 rsyslog.conf
local1.*;local1.debug /var/log/info.log
local1.debug /var/log/debug.log
当守护进程提供“info”日志时,它工作正常,它会写入 info.log 并且 debug.log 为空。但是当我获得“debug”日志时,它会写入两个文件。
帮助我从 info.log 中排除调试日志。
;local1.=debug
不起作用。我也试过写
local1.!debug /var/log/info.log
但仍然不起作用(在此配置信息日志中为空)
rsyslog 8.24.0-12
Centos 7.4
更新
local1.info /var/log/info.log
local1.debug;local1.info /var/log/debug.log
也不行,信息进入 info.log,没问题。但在 debug.log 中有 info+debug,我无法从中排除信息。;local1.info
不工作
答案1
密钥在手册页中:
原始 BSD syslogd 的行为是,根据给定的操作记录所有指定优先级及更高优先级的消息。Rsyslogd 的行为相同,但有一些扩展。
因此,如果您想排除调试,只需说明下一个最高优先级,即信息:
local1.info /var/log/info.log
这意味着所有优先级为 info 及更高的消息都将发送到 /var/log/info.log。
对于调试日志,解决方案也在手册页中:
您可以在每个优先级前面加上等号(“=”),以仅指定此单个优先级,而不指定上述任何一个优先级。
所以这一行应该是
local1.=debug /var/log/debug.log
仅获取调试消息。