lar*_*sks 12
在您的消息中记录应用程序名称。过滤应用程序名称而不是设施。如果您的应用程序不直接生成 syslog 消息,您可以应用输出过滤器(例如sed
)来调整事物以使其看起来像您想要的那样。
查看有关过滤条件的 Rsyslog 文档,了解如何配置此行为。根据该页面中的信息,这里有一个示例,说明如何将以字符串“application1”开头的消息放入/var/log/application1
:
if $msg startswith 'application1' then /var/log/application1
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序设置正确,您还可以对程序名称进行显式过滤:
if $programname == 'application1' then /var/log/application1
Run Code Online (Sandbox Code Playgroud)
您可以在您的rsyslog.conf
; 中执行各种复杂的过滤。通读文档以获取更多信息和示例。
编辑:rsyslog
可以使用模板为每个服务器创建单独的文件。类似下面的内容应该将所有日志消息放入每个主机名的单独文件中。(这是从联机帮助页中提取的。)
$template DynFile,"/var/log/system-%HOSTNAME%.log
*.* ?DynFile
Run Code Online (Sandbox Code Playgroud)
以下内容类似,但不记录调试消息。它还使用连接主机名而不是消息主机名。(这是基于我开发的记录 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
Run Code Online (Sandbox Code Playgroud)
如果您有更复杂的需求,或者想了解以上内容,请阅读联机帮助页和文档。