today tag more likes hashtags for followers famous best log4net

tag - Log4net detiene aleatoriamente el registro.



trending hashtags instagram (4)

Actualmente estoy construyendo una aplicación ASP.Net-MVC usando log4net para el registro, pero el registrador parece detenerse al azar. Felizmente se registrará durante un tiempo y luego se detendrá, y luego comenzará nuevamente después de un período de tiempo. Ni siquiera estoy seguro de qué es lo que hace que se reanude el registro. No estoy hablando solo de unos pocos mensajes que se pierden, a veces desaparece por un largo período de tiempo, como una hora más o menos.

¿Por qué se detendría y comenzaría así? ¿Cómo debo configurar esto adecuadamente para que no se detenga aleatoriamente como lo hace?

Aquí está mi configuración:

<log4net debug="true"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="../Logs//CurrentLog.txt" /> <appendToFile value="true" /> <datePattern value="yyyyMMdd" /> <rollingStyle value="Date" /> <filter type="log4net.Filter.LevelRangeFilter"> <acceptOnMatch value="true" /> <levelMin value="INFO" /> <levelMax value="FATAL" /> </filter> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="RollingLogFileAppender" /> </root>


Después de luchar con Log4Net por un tiempo, descubrí que dejaría de registrar por completo. No importa lo que intenté, no pude volver a trabajar. Parece que hay problemas cuando no inicializa el registro en las primeras líneas de código, pero esa indicación difusa no fue suficiente para que el registro funcione de manera confiable dentro de un dll cargado por otro programa, y ​​así sucesivamente.

Nunca logré activar el registro interno tampoco.

Finalmente resolví crear un dll dedicado que mis programas puedan llamar para crear de manera confiable un registro usando Log4Net. El dll solo hace eso y el código que crea el registro está aislado y nunca cambia. Supongo que de esta manera podré crear archivos de registros y escribirles de manera confiable. Hasta ahora, este enfoque ha solucionado los problemas con la tala en la que había pasado innumerables horas frustrantes.

Publiqué el código en este hilo SO:

.com/questions/308436/log4net-programmatically-specify-multiple-loggers-with-multiple-file-appenders


Envíe un mensaje de registro de prueba tan pronto como sea posible en el ciclo de vida de su aplicación, LogManager.GetLogger("Init").Info("Starting logging") un simple LogManager.GetLogger("Init").Info("Starting logging") . Si algún otro código de referencia es el primero en iniciar el registro, una parte de su proceso de inicialización puede fallar (ya que carga la configuración de otro ensamblaje, que solo hace una vez).

Lea aquí: https://logging.apache.org/log4net/release/faq.html#first-log


Log4Net fallará en silencio si algo sale mal y no puede escribir en sus apéndices. Esto es realmente algo bueno, ya que significa que un poco de registro fallido no reducirá un sistema por lo demás sano, pero puede ser molesto cuando algo no se está registrando como se espera.

Su mejor opción es activar el registro interno de log4net para hacer algunos diagnósticos y (con suerte) averiguar por qué está fallando.

Así que en el archivo de configuración de tu aplicación agrega:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="log4net.Internal.Debug" value="true"/> </appSettings> </configuration>

que activará el registro interno, que se envía a System.Diagnostics.Trace , para que pueda agregar:

<configuration> ... <system.diagnostics> <trace autoflush="true"> <listeners> <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:/tmp/log4net.txt" /> </listeners> </trace> </system.diagnostics> ... </configuration>

para capturar esto en un archivo.


También verifique si log4net aún está configurado en el archivo AssemblyInfo.cs. En mi caso, un check-in hizo que se eliminara la siguiente línea en este archivo:

[assembly: log4net.Config.XmlConfigurator (Watch = true)]

Lo que a su vez hizo que log4net dejara de registrar ...