Esto realmente me ha rascándome la cabeza ....¿Por qué podría Log4net entradas van "perdido" en algunos oyentes
He estado usando log4net (actualmente la versión 1.2.10) en una aplicación desde hace algún tiempo. Mientras agregaba una nueva opción a la aplicación, noté que a pesar de que el apilador de la consola no estaba viendo los métodos log4net Debug, Error, etc. que llamaban a los elementos de ese origen de registro.
Después de haber comprobado lo obvio (como asegurarse de que no haya filtrado), noté algo extraño. Si tengo más de un appender (por ejemplo, un apéndice de archivo de registro y un appender UDP), los appenders a veces verán diferentes subconjuntos de los mensajes de registro. El subconjunto que ven parece ser aleatorio, pero normalmente cuando se produce el problema no pueden ver todos los mensajes de una fuente de registro determinada.
¿Por qué podría estar sucediendo esto, y qué puedo hacer al respecto, ya que la pérdida de mensajes significa que no se puede confiar en que el archivo de registro muestre una imagen precisa de los fallos remotos?
[a la información adicional añadido decimonovena Ene, 2010]
finalmente tomó una buena mirada en el objeto ILOG conseguir pasar de nuevo en respuesta a la llamada
LogManager.GetLogger(typeof (MyTypeHere));
En algunas ocasiones, me Estoy obteniendo un objeto ILog con Depuración, Información, Advertencia, Error, etc. configurado en falso. En otras ocasiones, el objeto ILog los ha configurado correctamente en verdadero. Como mi código no hace nada para manipular esos indicadores, en las ocasiones en que se pasa mi código, los mensajes de objeto ILog "deshabilitados" de mi código (comprensiblemente) no se propagan en absoluto.
Todavía no puedo explicar la aparente discrepancia entre los dos apéndices.
¿Hay algún buffering involucrado? Sé que mis archivos no se actualizan de inmediato ... si alguna vez sale mal, ¿nunca se envía el buffer al appender? –
Hola, ¿llegaste al fondo de esto? Tengo el mismo problema entre AdoNetAppender y RollingLogFile Appender – richardwhatever
No, nunca resolví completamente, sin embargo, se reescribió el fragmento de código donde se observó el problema y desapareció la aparición ocasional del objeto ILog con todos los registradores deshabilitados. . Nuestra mejor suposición fue que puede haber habido algún tipo de condición de carrera extraña que ocasionalmente resultó en que la llamada a GetLogger devolviera un registrador instanciado antes de que se completara la inicialización del registro. –