![rsyslog 模板停止被忽略](https://linux22.com/image/746249/rsyslog%20%E6%A8%A1%E6%9D%BF%E5%81%9C%E6%AD%A2%E8%A2%AB%E5%BF%BD%E7%95%A5.png)
我尝试配置我的模板以进行远程日志记录,但停止语句被忽略,并且所有内容都重复记录在syslog
生成的文件中%programname%.log
。我希望传入的消息只记录在%programname%.log
ZABBIX
是我的本地机器,rsyslog 守护进程在此运行。远程设备是 Sierra 无线设备,它们正在记录到ZABBIX
。但 Sierras 的所有内容都重复记录。这是我的配置/etc/rsyslog.conf
。
$template remote-logs,"/media/jarne/Data/log/%FROMHOST%/%programname%.log", stop
:fromhost,isequal,"ZABBIX" stop
*.* ?remote-logs
我也尝试过:
*.* ?remote-logs & stop
和*.* ?remote-logs;stop
,但只出现错误。
有人能告诉我 stop 关键字如何工作以及在哪里有效吗?
我在 Ubuntu 18.04.3 上使用 rsyslog 版本 8.32.0。提前致谢!
答案1
如果你的主机名是小写的 zabbix,那么
:fromhost,isequal,"zabbix" stop
*.* ?remote-logs
应确保您的远程日志文件不包含本地消息,前提是这些行位于 rsyslog 配置的末尾。但是,那时阻止远程消息进入本地系统日志就太晚了。
如果你使用一种新的语法,它会更简单雷纳脚本你可以在其中写下类似
if ($fromhost == "zabbix") then {
*.* /var/log/syslog
} else {
*.* ?remote-logs
}