我們有基於 Beaglbone Black 的定制板,帶有 Wifi 晶片
我們有以下條目rsyslog.conf
# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.* :omfile:$dmesg_log_rotation
dmesglog 被 wifi 日誌淹沒,其開頭為mlan0
所以我更改了規則如下,
# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*, !contains, "mlan0" :omfile:$dmesg_log_rotation
然而,這些日誌仍然繼續淹沒 dmesglog。
有人可以建議我該日誌有什麼問題嗎?
對於規則還有其他建議嗎?有什麼指示嗎?
編輯:
經過一番挖掘,我發現rsyslogd -N1
可以用來檢查rsyslog.conf
.該檢查指出了錯誤。我正在嘗試以某種方式糾正規則。
編輯2
我按如下方式更改了規則,但現在我在 dmesglog 中看不到任何內容
# Redirect all kernel messages including dmesg to /var/log/dmesglog
if ( 'kern.*' contains "mlan0" ) then{ action( type="omfile" file="*" ) } else { action( type="omfile" file="$dmesg_log_rotation" )}
答案1
嘗試這個:
# Redirect all kernel messages including dmesg to /var/log/dmesglog
:msg, contains, "mlan0" ~
kern.* :omfile:$dmesg_log_rotation
根據rsyslogd 文檔您應該先丟棄選定的訊息。
如果您希望將過濾後的消息放入單獨的文件中,您可以編寫如下內容:
# Redirect all "mlan0" to /var/log/mlan.log
:msg, contains, "mlan0" :omfile:/var/log/mlan.log
:msg, contains, "mlan0" ~
# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.* :omfile:$dmesg_log_rotation
不幸的是,rsyslog 不支援透過核心模組名稱精確過濾,但您可以嘗試不同的屬性(味精只是其中之一),使用rules可以更準確地指定過濾規則》以。“,”是平等的“ 或者 ”正規表示式「。屬性和規則的完整清單是這裡(往下看 ”可用屬性「。
所以你應該嘗試,例如:
:programname, startswith, "mlan" :omfile:/var/log/mlan.log
或者:
:syslogtag, regex, "^mlan[0-9]" :omfile:/var/log/mlan.log
我不知道是否有任何屬性包含內核模式。無論如何,您可以隨時過濾味精和正規表示式。
:msg, regex, "^write-regex-matching-your-module-log-output" :omfile:/var/log/mlan.log