dmesglog の rsyslog.conf ルールは機能しません。

dmesglog の rsyslog.conf ルールは機能しません。

Wi-Fiチップを搭載したBeaglbone Blackベースのカスタムボードがあります。
次の項目があります。rsyslog.conf

# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*                         :omfile:$dmesg_log_rotation

dmesglogは、次のように始まるWi-Fiログでいっぱいです。mlan0そのため、ルールを次のように変更しました。

# Redirect all kernel messages including dmesg to /var/log/dmesglog
kern.*, !contains, "mlan0" :omfile:$dmesg_log_rotation

ただし、これらのログは依然としてdmesglogを溢れさせ続けています。

このログに何が問題なのか教えてください。
ルールに関する他の提案はありますか?どのような指示がありますか?

編集する
もう少し調査したところ、チェックがrsyslogd -N1利用可能であることがわかりましたrsyslog.conf。 checkでエラーが指摘されました。何とかルールを正そうと努力しています。

編集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はカーネルモジュール名による正確なフィルタリングをサポートしていませんが、他の属性を試すことができます(MSGそのうちの1つ)ルールを使用すると、フィルタリングルールをより正確に指定できます」によって。 。スタート「、」同じ「または」正規表現属性とルールの完全なリストは次のとおりです。ここ(下を見下ろす)利用可能な属性したがって、
次のように試してください。

:programname, startswith, "mlan" :omfile:/var/log/mlan.log

または:

:syslogtag, regex, "^mlan[0-9]" :omfile:/var/log/mlan.log

どのプロパティにカーネルモードが含まれているかわかりません。とにかくいつでもフィルタリングできます。MSGそして正規表現

:msg, regex, "^write-regex-matching-your-module-log-output" :omfile:/var/log/mlan.log

おすすめ記事