Obtendo o Syslog para registrar no syslog e no arquivo de log personalizado

Obtendo o Syslog para registrar no syslog e no arquivo de log personalizado

No syslog (Raspbian rsyslog swVersion = "8.1901.0"),

Estou tentando combinar/filtrar uma mensagem do sistema contendo uma string específica AMBOS para /var/log/syslog(padrão) E para um arquivo de log separado personalizado, ou seja /var/log/nut.log:.

Consegui alcançar isso colocando as seguintes linhas de filtro em /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

O & stopé necessário para interromper os filtros assim que uma correspondência for feita. Acredito que o método preferido é colocar isso em um arquivo dedicado, ou seja:/etc/rsyslog.d/0-nut.conf

Mas, quando faço isso, os filtros param de registrar em /var/log/sysloge registram exclusivamente em /var/log/nut.log... ?

Existe uma maneira diferente de fazer isso?

THX!

Responder1

A diretiva $IncludeConfigor in aparece antes da maioria das regras padrão, incluindo aquela que grava mensagens em . Se você adicionar suas regras após as outras regras neste arquivo, as mensagens nut já terão sido gravadas antes de também serem correspondidas e gravadas em .include()rsyslog.conf/var/log/syslogsyslognut.log

Se, em vez disso, você colocar suas regras em um arquivo separado, a mensagem será gravada nut.loge stopas regras posteriores serão ignoradas. A resposta é não usar stop.

Se o problema é que uma mensagem pode conter "USB" e "nut-" e, portanto, ser escrita duas vezes em nut.log, então você precisa usar uma sintaxe mais sofisticada.

A sintaxe herdada foi substituída porRainerScripta muito tempo atrás. Isso significa que você pode escrever filtros como:

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

Isto não precisa impedir o processamento adicional da mensagem.

informação relacionada