Я хочу сохранить сообщения журнала из программы 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
Конечно, есть много других способов, но я думаю, что изложенное выше довольно прямолинейно.