Cómo rastrear los problemas de log4net

Uso log4net todo el tiempo, pero una cosa que nunca he descubierto es cómo saber qué está pasando dentro. Por ejemplo, tengo un appender de consola y un appender de base de datos en mi proyecto. Hice algunos cambios en la base de datos y el código, y ahora el appender de la base de datos ya no funciona. Descubriré por qué eventualmente, pero sería de gran ayuda si pudiera ver lo que sucede dentro de log4net.

¿Log4net genera algún tipo de resultado que pueda ver para intentar determinar el origen de mi problema?

Primero debe establecer este valor en el archivo de configuración de la aplicación:

     

Luego, para determinar el archivo en el que desea guardar el resultado, puede agregar el siguiente código en el mismo archivo .config:

  ...        ...  

Puede encontrar una explicación más detallada en ‘¿Cómo habilito la depuración interna de log4net?’ en la página de preguntas frecuentes de log4net .

Si está utilizando un archivo de configuración de log4net, también puede activar la depuración cambiando el nodo superior a:

  

Esto funcionará una vez que se vuelva a cargar la configuración y suponiendo que su escucha de rastreo está configurada correctamente.

Además de la respuesta anterior, puede usar esta línea para ver el registro en tiempo real en lugar del resultado c: \ tmp \ log4net.txt.

 log4net.Util.LogLog.InternalDebugging = true; 

Por ejemplo, en una aplicación de consola, puede agregar esto y luego ver la salida en tiempo real. Es bueno para depurar log4net en un pequeño arnés de prueba para ver qué está pasando con el appender que está probando.

Asegúrese de que la aplicación raíz donde está su punto de entrada registre algo en log4net. Dale uno de estos:

 private static ILog logger = LogManager.GetLogger(typeof(Program)); static void Main(string[] args) { logger.InfoFormat("{0} v.{1} started.", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version.ToString()); 

Con 2.0.8, tuve una situación interesante. Creé un proyecto de biblioteca y un proyecto de prueba exe que demostraría sus capacidades. El proyecto de la biblioteca se configuró para usar Log4net como era el proyecto exe. El proyecto exe usó el atributo de información de la asamblea para registrar la configuración, pero no obtuve salida de registro a la consola ni al archivo de registro. Cuando encendí el registro de depuración interno de log4net, obtuve algunos mensajes internos escritos en la consola, pero todavía ninguno de mis registros normales. No se informaron errores. Todo comenzó a funcionar cuando agregué el código anterior a mi progtwig. De lo contrario, Log4net se configuró correctamente.

Si el registro interno no le proporciona suficiente información, es muy fácil construir y depurar el código fuente . Si no desea mezclar esto con su proyecto de desarrollo, agregue una aplicación de consola simple que solo registra un mensaje, copie el log4net.config su proyecto a esta aplicación y depure la clase en cuestión.