log4net
Solución de problemas de Log4Net
Buscar..
Introducción
Log4net es un sistema de registro de fallos. La parada de falla significa que deja de iniciar sesión en una excepción interna y por diseño no interactúa con el flujo del programa. Saber esto explica que la solución de problemas de log4net no es tan fácil. Si falla el registro, su programa no se da cuenta. Verá muchas preguntas sobre: ¿por qué mi registro log4net no funciona? Este artículo explica la solución de problemas básica y las soluciones más comunes.
En la mayoría de los casos, el primer paso es habilitar la depuración interna para log4net.
Habilitar depuración interna
Hay 2 formas de habilitar la depuración interna en log4net:
- Especifique la opción log4net.Internal.Debug en el archivo de configuración de la aplicación
- Habilitar la depuración interna de log4net programáticamente
Especifique la opción log4net.Internal.Debug en el archivo de configuración de la aplicación
Este es el método preferido para habilitar la depuración interna, agregue la clave log4net.Internal.Debug al archivo app.config de su aplicación.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
El registro de depuración se iniciará inmediatamente cuando se inicie la aplicación.
Habilitar la depuración interna de log4net programáticamente
Una segunda forma es hacer esto programáticamente. Establezca la propiedad log4net.Util.LogLog.InternalDebugging en true:
log4net.Util.LogLog.InternalDebugging = true;
Salida de registro de depuración interna
Los mensajes internos de depuración se escriben en la consola y en el seguimiento System.Diagnostics.Trace. Cuando tenga que configurar la salida, puede redirigir System.Console.Out. O puede redirigir el mensaje de rastreo a un archivo:
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
Appenders amortiguados
Algunos de los agregadores de log4net son agregadores almacenados. Estos agregadores solo registrarán cuando se registre una cierta cantidad de mensajes. Algunas muestras son SmtpAppender, RemotingAppender o AdoNetAppender. Estos agregadores tienen un ajuste BufferSize:
<bufferSize value="100" />
Esto significa que el registrador registrará cuando haya 100 mensajes en el búfer. Cuando desee probar el appender, puede establecer el bufferSize en 1.
Si sabe cuál es el búfer a vaciar en un error, puede usar un evaluador:
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
Si se cumple la condición del evaluador, se vaciará el búfer.
Configurar () no se llama, o se llama varias veces
Si no ve ningún registro, puede verificar si se llama a Configure() en su aplicación. La forma más sencilla es agregarlo como un atributo a su ensamblaje:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Entonces no tiene que agregar log4net.Config.XmlConfigurator.Configure() en ninguna parte de su configuración. O puede agregar log4net.Config.XmlConfigurator.Configure() en uno de sus métodos de inicio. Asegúrese de que solo llama a la configuración una vez.
El archivo appender no escribe
Si tiene un archivo adjunto, asegúrese de escribir en una ubicación donde el usuario tenga permiso para crear y actualizar los archivos. Si no, el registro fallará. Puede verificar esto cuando tenga habilitada la depuración interna.