具有自定义属性的 rsyslog 日志路径

具有自定义属性的 rsyslog 日志路径

我有一个运行 v7.4.3 的 rsyslog 服务器,接收以下格式的流:

<PRI>Date hostname app: name=VALUE message

我需要做的是从消息中提取值,并将其记录在文件中,例如 /var/log/VALUE/syslog.log

我可以使用正则表达式从消息中获取“name=VALUE”,但不知道如何删除“name=”或将其转换为路径。有什么想法吗?

答案1

方法如下。请注意,您需要使用 rsyslog 7.4.5 或更高版本,因为以前的版本中有一个严重的错误,在使用 re_extract 时会导致 rsyslog 崩溃。

set $!namevalstr = re_extract($msg, "name=([a-zA-Z0-9])+", 0, 0, "name=unknown");
set $!valstr = field($!namevalstr, "=", 2);
$template PerHostSyslog,"/var/log/%$!valstr%/syslog.log
*.* -?PerHostSyslog

这似乎起了作用。

相关内容