
在系統日誌(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")
}
這不需要阻止訊息的進一步處理。