La regla rsyslog.conf para dmesglog no funciona

La regla rsyslog.conf para dmesglog no funciona

Tenemos una placa personalizada basada en Beaglbone Black con chip Wifi.
Tenemos la siguiente entrada en elrsyslog.conf

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

dmesglog está inundado de registros wifi que comienzan con mlan0Así que cambié la regla de la siguiente manera:

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

Sin embargo, esos registros siguen inundando el dmesglog.

¿Alguien puede sugerirme qué hay de malo en ese registro?
¿Alguna otra sugerencia para gobernar? ¿algún consejo?

EDITAR:
Después de investigar un poco, descubrí que rsyslogd -N1se puede usar para verificar el archivo rsyslog.conf. Y esa verificación señaló un error. Estoy intentando corregir la regla de alguna manera.

EDITAR2
Cambié la regla de la siguiente manera, pero ahora no veo nada en el 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" )}

Respuesta1

Prueba esto:

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

De acuerdo adocumentación rsyslogdprimero debes descartar los mensajes seleccionados.


Si desea colocar los mensajes filtrados en un archivo separado, puede escribir algo como:

# 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

Desafortunadamente, rsyslog no admite el filtrado exactamente por el nombre del módulo del kernel, pero puedes probar diferentes propiedades (mensajees solo uno de ellos), y puede especificar la regla de filtro con mayor precisión usando reglas "comienza con", "es igual" o "expresión regular". La lista completa de propiedades y reglas esaquí(mira abajo "Propiedades disponibles".
Entonces deberías intentar, por ejemplo:

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

O:

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

No sé si alguna propiedad contendría el modo kernel. De todos modos siempre puedes filtrar pormensajeconexpresión regular.

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

información relacionada