Я нашел примеры того, как фильтровать содержимое записи журнала с помощью rsyslog. Но есть ли способ сделать это, чтобы фильтровать только содержимое определенного объекта? Например что-то вроде:
if local0.* msg contains "foo"
Но с реальным синтаксисом вместо того, что я только что придумал.
Вам нужно будет сделать два последовательных фильтра, а не оба в одной строке.
:msg, contains, "some-text"
if $syslogfacility-text == "facility" then /var/log/somelog.log
~
Редактировать:
Я беру это обратно. Теперь я видел, как это делается в обоих направлениях. Я только что нашел этот пример в wiki rsyslog, который можно адаптировать.
if $programname == 'popa3d' and $syslogseverity <= '6' then /var/log/popa3d.log
Вы, конечно, подставите в пример свои условия.
if $syslogfacility-text == 'local0' and $msg contains 'some-text' then /var/log/somelog.log
& ~