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

Одновременная фильтрация сообщений журнала по имени программы и уровню журнала в rsyslogd

Я хочу сохранить сообщения журнала из программы foobar с уровнем журнала err в файл /var/log/foobar.log в rsyslogd. Как я могу это сделать?

Вот как я могу фильтровать сообщения по имени программы:

:programname,contains,"foobar" /var/log/foobar.log

Вот как я могу фильтровать сообщения по уровню журнала:

*.err /var/log/foobar.log

Но я не понимаю, как фильтровать по обоим этим фильтрам одновременно.

Этот пример на вики-странице rsyslogd предлагает способ сделать то, что вы хотите. Это Фильтрация по имени программы с использованием синтаксиса на основе выражений часть.

Используя пример, представленный в вики:

if $programname == 'foobar' and $syslogseverity-text == 'error' then /var/log/foobar.log 

Поместите это в rsyslogd.conf или как фрагмент внутри rsyslog.d

простой способ сделать это ... если ($ program содержит "foobar") и ($ severity содержит "err"), то /var/log/foobar.log

Конечно, есть много других способов, но я думаю, что изложенное выше довольно прямолинейно.