我使用的是包含 rsyslogd v5.8.10 的 CentOS6.5
我的服务器中有20个进程程序。我想使用rsyslogd接收日志,并希望根据消息中进程程序的标识存储在不同的日志文件中,所以我决定按以下格式发送日志:{PRC }示例:{PRC server1_process_a10}这是消息文本
我想知道如何检查消息是否匹配过滤器/规则(使用正则表达式?),然后在日志文件名中使用 process_name,log_level ?
例如:日志消息为(日志级别为 debug):{PRC server1_process_a10}this_is_message_text 我们希望将此消息存储到 /var/log/myprogram-server1_process_a10_debug.log
答案1
最后我解决了这个问题。
第一步,通过如下程序发送日志文本:
sender_host sender_program log_text
第二次在 /etc/rsyslog.conf 中添加以下设置
$template tpl,"/var/log/procs_%程序名:R,ERE,0,ZERO:(PRCS_[A-Za-z0-9]+)--end%%syslogseverity-文本%%$年%-%$月%-%$日%.log"
local0.* ?tpl
那么一切都会好起来的。