dmesglog 的 rsyslog.conf 規則不起作用

dmesglog 的 rsyslog.conf 規則不起作用

我們有基於 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

相關內容