
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
... のみにログ記録するようになりますか?
これを行う別の方法はありますか?
THX!
答え1
$IncludeConfig
のまたはinclude()
ディレクティブはrsyslog.conf
、 にメッセージを書き込むルールを含むほとんどの標準ルールの前に表示されます。 このファイル内の他のルールの後にルールを追加すると、 のメッセージは、 が一致して に書き込まれる前に、/var/log/syslog
すでに に書き込まれていることになります。syslog
nut.log
代わりに、ルールを別のファイルに配置すると、メッセージは に書き込まれnut.log
、 はstop
それ以降のルールをスキップします。 を使用しないことが答えですstop
。
メッセージに「USB」と「nut-」の両方が含まれ、 に 2 回書き込まれる可能性があるという問題がある場合はnut.log
、より洗練された構文を使用する必要があります。
従来の構文は次のように置き換えられました。レイナースクリプトかなり昔の話です。つまり、次のようなフィルターを記述できるということです。
if ($msg contains "USB" or $msg contains "nut-") then {
action(type="omfile" file="/var/log/nut.log")
}
これにより、メッセージのさらなる処理が妨げられることはありません。