Правило rsyslog.conf для dmesglog не работает

Правило rsyslog.conf для dmesglog не работает

У нас есть специальная плата на базе Beaglbone Black с чипом Wi-Fi.
У нас есть следующая запись в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. И эта проверка указала на ошибку. Я пытаюсь как-то исправить правило.

ИЗМЕНИТЬ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 не поддерживает фильтрацию именно по имени модуля ядра, но вы можете попробовать другие свойства (сообщениетолько один из них), и вы можете указать правило фильтрации более точно, используя правила "начинается с", "равно" или "регулярное выражение". Полный список свойств и правилздесь(Смотри ниже "Доступные свойства".
Так что вам стоит попробовать, например:

: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

Связанный контент