txt texto sobrescribir manejo lineas leer guardar escribir ejemplos datos crear como archivos archivo agregar c# .net logging log4net log4net-configuration

c# - texto - Escribiendo logs a archivo



manejo de archivos en c# ejemplos (5)

¿Llamó al método de configuración cuando la aplicación se inicia por primera vez?

log4net.Config.XmlConfigurator.Configure();

En caso afirmativo. Debes ser bueno. Compruebe los permisos de archivo en el disco que está escribiendo.

Si lo desea, puede habilitar la depuración interna de log4net también para descubrir qué está mal.

http://logging.apache.org/log4net/release/faq.html#troubleshooting

Tengo algunos problemas al escribir registros de log4net en el archivo. Parece que hago todo como se describe en el manual, pero eso no funciona. Aquí está mi archivo logging.config:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log.txt" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %message%newline" /> </layout> </appender> </log4net> </configuration>

Por favor, ayuda con un ejemplo de archivo de configuración que realmente funciona.


Aquí hay una guía paso a paso completa para agregar Log4Net a su proyecto, en Visual Studio 2012 y .NET 4.5.

  1. Agregue una nueva aplicación de consola C # a su solución.

  2. Seleccione Tools >> Library Package Manager >> Manage NuGet Packages For Solution y busque log4net . Instálelo y seleccione los proyectos que desea agregar las referencias log4net.

  3. Editar Program.cs :

using System; namespace Log4Net { class Program { private static readonly log4net.ILog log = log4net.LogManager.GetLogger (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); static void Main(string[] args) { Console.WriteLine("Writing to /"log.txt/" in the same directory as the .exe file./n"); log.Info("Info logging"); try { throw new Exception("Exception!"); } catch (Exception e) { log.Error("This is my error", e); } Console.WriteLine("[any key to exit]"); Console.ReadKey(); } } } }

  1. Agregue log4.config , haga clic con el botón derecho y seleccione Properties luego seleccione Copy to Output Directory - Copy If Newer .

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="250KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="RollingFileAppender" /> </root> </log4net> </configuration>

  1. Edite App.Config para que coincida con lo siguiente:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key="log4net.Config" value="log4.config"/> <add key="log4net.Config.Watch" value="True"/> <add key="log4net.Internal.Debug" value="False"/> </appSettings> </configuration>

  1. Ejecute el programa y observe el archivo log.txt que se crea en el directorio output /bin/Debug/ :

    2013-08-10 11:54:26,798 [10] INFO Log4Net.Program [(null)] - Info logging 2013-08-10 11:54:26,824 [10] ERROR Log4Net.Program [(null)] - This is my error System.Exception: Exception! at Log4Net.Program.Main(String[] args) in C:/Test/Log4Net/Program.cs:line 14

  2. En el futuro, si desea agregar log4net a otro proyecto, seleccione Tools >> Library Package Manager >> Manage NuGet Packages For Solution seleccione log4net y haga clic en Manage luego marque los proyectos a los que desea agregar log4net .


Fantástico. Las respuestas son correctas ... excepto que no estaban trabajando para mí

Busqué en la red y finalmente descubrí que faltaba la siguiente línea en Assembly.cs:

[assembly: log4net.Config.XmlConfigurator]


Hay dos cosas que puedes hacer:

Una, si desea usar un archivo de configuración separado, agregando lo siguiente a su archivo app.config, este configurará el registro automáticamente.

<?xml version="1.0"?> <configuration> <appSettings> <add key="log4net.Config" value="log4.config"/> <add key="log4net.Config.Watch" value="True"/> <add key="log4net.Internal.Debug" value="False"/> </appSettings> </configuration>

De lo contrario, debe iniciar el inicio de sesión al inicio de su aplicación.

//Initiate logging based on web.config file log4net.Config.XmlConfigurator.Configure(); // Create a logger for use in this class log4net.ILog log4 = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


Parece que no tienes un elemento <root> que haga referencia a tu appender:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="250KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="RollingFileAppender" /> </root> </log4net> </configuration>