not log creating configurar c# .net asp.net logging log4net

c# - configurar - log4net not creating log file



Log4net no escribe el archivo de registro (8)

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:

<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/> </configSections> <log4net> <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> <file value="D:/MyData/Desktop/LogFile.txt" /> <appendToFile value="true" /> <encoding value="utf-8" /> <layout type="log4net.Layout.SimpleLayout" /> </appender> <root> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> </root> </log4net>

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?


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


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.


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)]


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


Insertar:

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

al final del archivo AssemblyInfo.cs


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(); }


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.


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:

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

Y ves la traza en la salida estándar