Linux
讓 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
… ?有不同的方法可以做到這一點嗎?
謝謝!
中的
$IncludeConfig
orinclude()
指令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") }
這不需要阻止對消息的進一步處理。