如何使用正则表达式中的部分匹配来生成操作的文件名?

如何使用正则表达式中的部分匹配来生成操作的文件名?

我使用的是包含 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

那么一切都会好起来的。

相关内容