rsyslogloggingpath与自定义属性

我有一个rsyslog服务器运行v7.4.3接收stream的格式为:

<PRI>Date hostname app: name=VALUE message 

我需要做的是将VALUE从消息中提取出来,并将其logging在/var/log/VALUE/syslog.log

我可以使用正则expression式从消息中得到“name = VALUE”,但不知道如何去除“name =”或将其转换为path。 有任何想法吗?

所以这里是如何。 请注意,您需要使用rsyslog 7.4.5或更高版本,因为在以前的版本中有一个令人讨厌的bug,在使用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 

而这似乎工作。