Log4net no escribe el archivo de registro

Creé un escenario simple usando Log4net, pero parece que mis appenders no funcionan porque los mensajes no se agregan al archivo de registro.

Agregué lo siguiente al archivo web.config:

 

Dentro del archivo ASAX global que agregué:

 ILog logger = LogManager.GetLogger(typeof(MvcApplication)); 

y dentro del método Application_Start:

 logger.Info("Starting the application..."); 

¿Qué hice mal?

Llamas

 log4net.Config.XmlConfigurator.Configure(); 

en algún lugar para hacer que log4net lea su configuración? Por ejemplo, en Global.asax:

 void Application_Start(object sender, EventArgs e) { // Code that runs on application startup // Initialize log4net. log4net.Config.XmlConfigurator.Configure(); } 

Utilice esta página de preguntas frecuentes: Apache log4net Preguntas frecuentes

Aproximadamente 3/4 del camino hacia abajo le dice cómo habilitar la depuración de log4net mediante el rastreo de aplicaciones. Esto te dirá dónde está tu problema.

Los conceptos básicos son:

       

Y ves la traza en la salida estándar

Como sugirió @AndreasPaulsson, debemos configurarlo. Estoy haciendo la configuración en el archivo AssemblyInfo . Especifico el configuration file name aquí.

 // Log4Net Configuration. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

Además, asegúrese de que la opción “Copiar siempre” esté seleccionada para [log4net] .config como en esta imagen:

enter image description here

Asegúrese de que el proceso (cuenta) en el que se ejecuta el sitio tenga privilegios para escribir en el directorio de salida.

En IIS 7 y superior, esto se configura en el grupo de aplicaciones y normalmente es la identidad de la aplicación , que normalmente no tendrá permiso para escribir en todos los directorios.

Verifique sus registros de eventos (aplicación y seguridad) para ver si se lanzaron excepciones.

Insertar:

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

al final del archivo AssemblyInfo.cs

En mi caso, log4net no se estaba registrando correctamente debido a tener un espacio en el nombre de mi proyecto. Me volvía loco por qué el mismo código funcionaba bien en un proyecto diferente, pero no en el nuevo. Espacios Un espacio simple.

Por lo tanto, tenga cuidado con los espacios en los nombres de los proyectos. Aprendí mi lección

Para mí, moví la ubicación de los archivos de registro y solo cuando cambié el nombre del archivo a algo más, comenzó de nuevo.

Parece que si hay un archivo de registro con el mismo nombre ya existente, no pasa nada.

Luego renombré el archivo anterior y cambié el nombre de archivo del registro en la configuración nuevamente a lo que era.