我使用 rsyslog 变量来编写日志文件名。变量 %HOSTNAME% 和 %fromhost-ip%。一切正常,但问题是:如何将这些变量附加/添加到来自远程主机的日志的每一行日志中?
答案1
解决方案是使用自定义 rsyslog 模板。首先,创建日志消息模板。以下模板类似于默认的 syslog 格式,但添加了%fromhost-ip%
您可以以相同的方式添加其他变量
$template tplremote,"%timegenerated% %HOSTNAME% %fromhost-ip% %syslogtag%%msg:::drop-last-lf%\n"
然后我们创建文件名模板:
$template RemoteHost,"/var/log/remote/%HOSTNAME%.log"
最后,我们告诉 rsyslog 使用创建的模板:
if ($hostname != 'localhost') then ?RemoteHost;tplremote
& ~
注意,最后一行必须添加在包含的行之前。
*.info;mail.none;authpriv.none;cron.none
另请注意,这已在 redhat 上的 epel repo 的新 rsyslog 中进行了测试并正常运行(rsyslog-7.6.7-1.el6.x86_64
)。在其他发行版中,行为可能有所不同。