Назад | Перейти на главную страницу

Путь ведения журнала rsyslog с настраиваемым свойством

У меня есть сервер rsyslog под управлением v7.4.3, получающий поток в формате:

<PRI>Date hostname app: name=VALUE message

Что мне нужно сделать, так это вытащить ЗНАЧЕНИЕ из сообщения и зарегистрировать его в файле, например /var/log/VALUE/syslog.log.

Я могу получить «name = VALUE» из сообщения с помощью регулярного выражения, но понятия не имею, как вырезать «name =» или перевести его в путь. Любые идеи?

Итак, вот как. Обратите внимание, что вам нужно использовать rsyslog 7.4.5 или выше, поскольку в предыдущих версиях есть неприятная ошибка, которая вызывает сбой rsyslog при использовании re_extract.

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

И это, похоже, работает.