c# - logger - log4net xmlconfigurator
¿Por qué no se reconoce log4net en el archivo de configuración? (3)
Escribí una aplicación de consola de prueba en C # usando log4net :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4Net_Test
{
class Program
{
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
log.Info("Entering application");
log.Debug("Debug message");
log.Info("Leaving application");
}
}
}
Mi archivo App.config
ve así:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<log4net>
<!-- A1 is set to be a ConsoleAppender -->
<appender name="A1" type="log4net.Appender.FileAppender">
<file value="logfile.txt" />
<appendToFile value="false" />
<!-- A1 uses PatternLayout -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<!-- Set root logger level to DEBUG and its only appender to A1 -->
<root>
<level value="DEBUG" />
<appender-ref ref="A1" />
</root>
</log4net>
</configuration>
La ejecución del programa de prueba termina en el siguiente mensaje de error:
log4net:ERROR Exception while reading ConfigurationSettings. Check your .config
file is well formed XML.
System.Configuration.ConfigurationErrorsException: Configuration system failed t
o initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognize
d configuration section log4net.
¿Qué está mal con mi archivo de configuración?
ACTUALIZACIÓN 1: configSections´ part was missing, as pointed out in the accepted answer. But I also had to remove the
configSections´ part was missing, as pointed out in the accepted answer. But I also had to remove the
section, otherwise the same error appeared. I do not know why the
inicio section, otherwise the same error appeared. I do not know why the
section, otherwise the same error appeared. I do not know why the
sección de inicio también está causando el problema. Quizás alguien más experimentado pueda contar y escribir un comentario.
La sección de inicio también debía eliminarse porque log4net no es compatible con Framework .NET4.5
Puede ver mi respuesta similar aquí: https://.com/a/13236410/1783224
O puede ver los marcos admitidos en la documentación: http://logging.apache.org/log4net/release/features.html
Necesitas agregar log4net
también en el bloque de sección.
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
También debe recordar que el bloque de sección < configSections > debe estar bajo la < configuración > de lo contrario, se producirá un error:
Excepción al leer los ajustes de configuración. Compruebe que su archivo .config está bien formado XML.
Por ejemplo:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<!-- Log4net Logging Setup -->
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender,log4net">
<file value="service.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger.%method - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>