场景:我正在运行一组机器。 每台机器运行各种独特的Python程序(跨群集),但dynamic设置ID。
现在,他们都在本地进行日志logging。 所以,我可能有这样的日志:
process_5.log process_6.log
对于ID为5和6的进程。
另一台机器可能有:
process_20.log process_25.log
我希望将这些日志转发到运行rsyslogd的日志服务器。 Python的日志logging工具有一个很好的系统日志处理程序,所以我知道如何连接到远程服务器。 我没有想到的是如何使用模板/ DynFile保持日志分离。
例如在日志服务器上,我会想看到:
process_5.log process_6.log process_20.log process_25.log
它们对应于发送机器上同名的日志。
有没有办法使用rsyslogd模板来解决这个问题?
当用户量子发布,他们的模板应该工作。 这是我的:
$template DynFile, "/var/log/syslog/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/%syslogfacility-text%.log" *.info;mail.none;authpriv.none;cron.none ?DynFile authpriv.* ?DynFile mail.* ?DynFile cron.* ?DynFile uucp,news.crit ?DynFile
这将使每个应用程序或设施的日志进入自己的文件。 服务器上的每个客户端日志都将显示在客户端上。
注意%syslogfacility-text% 。 您可以根据Property Replacer文档将此部分replace为其他各种属性。
每台机器运行各种独特的Python程序(跨群集),但dynamic设置ID。
process_$ID是否也是程序名? 如果是的话,试试这个:
$template DynaFile,"/var/log/rsyslog/python_apps/%PROGRAMNAME%.log" if $programname startswith 'process' then -?DynaFile
如果需要,可以将其放在带有%HOSTNAME%单独文件夹中。
PS:我没有testing过。 请让我知道这对你有没有用。