我们有大约9-10个设备,我们希望将日志记录定向到我们的rsyslog服务器.但是,只有8个当地设施(0-7).我们怎样才能解决这个限制?
解决方法
在邮件中记录应用程序名称.过滤应用程序名称而不是设施.如果您的应用程序没有直接生成系统日志消息,您可以应用输出过滤器(例如,sed)按摩事物以查找您想要的方式.
查看filter conditions上的Rsyslog文档,了解如何配置此行为.根据该页面中的信息,这里是一个如何将以“application1”字符串开头的消息放入/ var / log / application1的示例:
if $msg startswith 'application1' then /var/log/application1
如果您的应用程序正确设置,您还可以显式过滤程序名称:
if $programname == 'application1' then /var/log/application1
您可以在rsyslog.conf中执行各种复杂的过滤;阅读文档以获取更多信息和示例.
编辑:rsyslog可以使用模板为每个服务器创建单独的文件.类似下面的内容应该将所有日志消息放入每个主机名的单独文件中. (这是从联机帮助页中解除的.)
$template DynFile,"/var/log/system-%HOSTNAME%.log *.* ?DynFile
以下内容类似,但不记录调试消息.它还使用连接主机名而不是消息主机名. (这是基于我开发的用于记录Obi100输出的内容.)
$template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" $template HostFile,"/var/log/system-%fromhost%.log if $syslogseverity < 7 then -HostFile;HostFormat
如果您有更复杂的需求,或者想了解上述内容,请阅读联机帮助页和文档.