Es genial cómo filtros log4net todos pueden ser combinados para lograr el resultado deseado. Todas las entradas de registro de forma predeterminada tienen una disposición de filtro "Neutral" y log4net registra de manera predeterminada todas las entradas que son neutrales.
Lo que el LevelRangeFilter
va a hacer es si el nivel de la entrada está en el rango, se establece la disposición de filtro a "Aceptar" (o dejar su disposición, ya que era si el parámetro acceptOnMatch
se establece en false
) y marcará todas las entradas que no estén en el rango con una disposición de "Denegar".
El LevelMatchFilter
fijará la disposición para el filtro especificado en el parámetro levelToMatch
a "Aceptar" a menos que el acceptToMatch
se establece en false
, entonces será establecer entradas coincidentes a "Denegar", las entradas incomparables serán dejadas a lo que eran antes de.
Entonces, ¿qué se puede hacer es usar una combinación de los dos filtros para obtener lo que desea:
<appender name="FilteredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMax value="FATAL" />
<levelMin value="ERROR" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="WARN" />
<acceptOnMatch value="false" />
</filter>
</appender>
Esto le permitirá fácilmente alternar el campo Advertir nivel de encendido y apagado. Todas las entradas que están fuera del rango ya están marcadas como "Denegar" y el LevelMatchFilter
aquí marcará las entradas de nivel de ADVERTENCIA también para negar, por lo que no es necesario el DenyAllFilter
.
¡Hola! Gracias por la respuesta rápida. ¿Se puede hacer programáticamente? solo encontré una forma de cambiar el nivel de registro del Logger (raíz), no de los apéndices. –
lo siento, me perdí tu comentario. debería ser posible también programáticamente. aquí puede ver cómo llegar a todos los appenders: http://stackoverflow.com/questions/3016108/change-log4net-conversion-pattern-or-layout-at-runtime/3031867#3031867 –