讓 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

$IncludeConfig中的 or指令include()出現rsyslog.conf在大多數標準規則之前,包括將訊息寫入 的規則/var/log/syslog。如果您在此文件中的其他規則之後添加您的規則,那麼堅果訊息將在syslog匹配並寫入nut.log.

相反,如果您將規則放在單獨的文件中,則訊息將寫入nut.log,然後stop將跳過後面的規則。答案是不使用stop

如果問題是訊息可能同時包含“USB”和“nut-”,因此寫入兩次nut.log,那麼您需要使用更複雜的語法。

舊語法被替換為雷納腳本很久以前。這意味著您可以編寫如下過濾器:

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

這不需要阻止訊息的進一步處理。

相關內容