Este sitio dice
Los registradores pueden tener niveles asignados. Los niveles son instancias de la clase log4net.Core.Level. Los siguientes niveles se definen en orden de prioridad creciente :
- TODAS
- DEPURAR
- INFORMACIÓN
- ADVERTIR
- ERROR
- FATAL
- APAGADO
DEPURACIÓN parece tener menor prioridad y ERROR es mayor.
Pregunta
- Si configuro el ejemplo Min y Max DEBUG y ERROR, imprime todo DEBUG, INFO, WARN y ERROR. Sin uso de filtro min y max. Si especifico ERROR (Nivel de registro = ERROR) ¿Incluirá DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
En lugar de filtro mínimo y máximo. ¿Es posible configurar un nivel e incluir todos los demás niveles por debajo para el registro?
Ejemplo: establecer el nivel como Error, incluirá DEBUG, INFO, WARN y ERROR. ¿Es esto posible con log4net?
Publicar la configuración de log4net en función de uno de los comentarios:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections >
<log4net debug="true">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<layout type="log4net.Layout.XMLLayout" /> -->
<param name="File" value="TestLog.log" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="[START LOG] %newline" />
<footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
<conversionPattern value="%d [%t] %-5p - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="log4NetExample">
<!-- <appender-ref ref="B" /> -->
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
levelMax
? Creo que eso debería incluir todo, debajo de ella, si no se especifica unlevelMin
Respuestas:
Esto podría ayudar a comprender qué se registra a qué nivel se pueden asignar niveles a los registradores. Los niveles son instancias de la clase log4net.Core.Level. Los siguientes niveles se definen en orden de gravedad creciente: Nivel de registro.
Número de niveles registrados para cada nivel de configuración:
fuente
Para la mayoría de las aplicaciones, le gustaría establecer un nivel mínimo pero no un nivel máximo.
Por ejemplo, cuando depure su código, configure el nivel mínimo en DEBUG, y en producción, configúrelo en WARN.
fuente
<level value="ALL" />
a<level value="WARN" />
y obtendrá solo las advertencias y errores.DEBUG mostrará todos los mensajes, INFORMACIÓN, además de los mensajes DEBUG, y así sucesivamente.
Por lo general, uno usa INFO o WARN. Esto depende de la política de la empresa.
fuente
Aquí hay un código que dice sobre la prioridad de todos los niveles de log4net:
fuente
Como otros han señalado, generalmente es preferible especificar un nivel de registro mínimo para registrar ese nivel y cualquier otro más severo que este. Parece que solo estás pensando en los niveles de registro al revés.
Sin embargo, si desea un control más detallado sobre el registro de niveles individuales, puede indicarle a log4net que registre solo uno o más niveles específicos utilizando la siguiente sintaxis:
O para excluir un nivel de registro específico agregando un nodo "denegar" al filtro.
Puede apilar varios filtros juntos para especificar múltiples niveles. Por ejemplo, si solo deseabas los niveles WARN y FATAL. Si los niveles que deseaba eran consecutivos, entonces LevelRangeFilter es más apropiado.
Doc de referencia: log4net.Filter.LevelMatchFilter
Si las otras respuestas no le han proporcionado suficiente información, espero que esto lo ayude a obtener lo que desea de log4net.
fuente
by adding a "deny" node to the filter
¿cómo?Es cierto que la documentación oficial ( Manual de Apache log4net ™ - Introducción ) establece que existen los siguientes niveles ...
... pero extrañamente cuando veo el ensamblado log4net.dll, v1.2.15.0 clase sellada log4net.Core.Level veo los siguientes niveles definidos ...
He estado usando TRACE junto con PostSharp OnBoundaryEntry y OnBoundaryExit durante mucho tiempo. Me pregunto por qué estos otros niveles no están en la documentación. Además, ¿cuál es la verdadera prioridad de todos estos niveles?
fuente
Intenta así, funcionó para mí
Esto registra 3 tipos de errores: error, información y advertencia
fuente