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

相关内容