Настройка Syslog для записи как в syslog, так и в пользовательский файл журнала

Настройка Syslog для записи как в syslog, так и в пользовательский файл журнала

В системном журнале (Raspbian rsyslog swVersion="8.1901.0"),

Я пытаюсь сопоставить / отфильтровать системное сообщение, содержащее определенную строку, КАК по /var/log/syslog(по умолчанию), ТАК И по отдельному пользовательскому файлу журнала, например: /var/log/nut.log.

Мне удалось добиться этого, разместив следующие строки фильтра /etc/rsyslog.conf:

# NUT logging: Include USB msgs since montoring UPS via only USB
:msg,contains,"USB" /var/log/nut.log
& stop
:msg,contains,"nut-" /var/log/nut.log
& stop

Это & stopнеобходимо для остановки фильтров после того, как будет найдено соответствие. Я считаю, что предпочтительный метод — поместить это в специальный файл, например:/etc/rsyslog.d/0-nut.conf

Но когда я это делаю, фильтры перестают регистрировать данные в /var/log/syslog, и регистрируют данные исключительно в /var/log/nut.log... ?

Есть ли другой способ сделать это?

Спасибо!

решение1

Директива $IncludeConfigor include()в rsyslog.confпоявляется перед большинством стандартных правил, включая то, которое записывает сообщения в /var/log/syslog. Если вы добавите свои правила после других правил в этом файле, то сообщения nut уже будут записаны в , syslogпрежде чем они также будут сопоставлены и записаны в nut.log.

Если вместо этого вы поместите свои правила в отдельный файл, сообщение будет записано в nut.log, тогда stopпропустит последующие правила. Ответ — не использовать stop.

Если проблема в том, что сообщение может содержать как «USB», так и «nut-», и поэтому должно быть записано дважды nut.log, то вам необходимо использовать более сложный синтаксис.

Устаревший синтаксис был заменен наRainerScriptдавным-давно. Это значит, что можно писать фильтры типа:

if ($msg contains "USB" or $msg contains "nut-") then {
   action(type="omfile" file="/var/log/nut.log")
}

Это не обязательно должно препятствовать дальнейшей обработке сообщения.

Связанный контент