2017-03-01 4 views
1

Actuellement, j'utilise une bibliothèque de classes pour stocker une classe qui gère la journalisation à l'aide de log4net. Cette classe est utilisée dans d'autres projets.Erreur Log4Net: Impossible de trouver la section de configuration 'log4net' dans le fichier .config de l'application

J'ai lu beaucoup d'autres questions et réponses, mais je ne l'ai pas été en mesure de fixer encore ...

I a permis le débogage interne de log4net, car il ne serait pas écrire dans un fichier, et ceci est l'erreur que je reçois:

log4net:ERROR Failed to find configuration section 'log4net' in the application's .config file. Check your .config file for the <log4net> and <configSections> elements. The configuration section should look like: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 

ce sont mes fichiers: log4net.config

<log4net debug="true"> 
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
     <param name="File" value="Logs/log4net.log" /> 
     <param name="AppendToFile" value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="Header" value="[Header]\r\n" /> 
     <param name="Footer" value="[Footer]\r\n" /> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" /> 
     </layout> 
    </appender> 

    <root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
</log4net> 

App.config

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
     </configSections> 

     <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
     </appSettings> 

     <parameter> 
     <parameterName value="@BlogId" /> 
     <dbType value="Int32" /> 
     <layout type="log4net.Layout.RawPropertyLayout"> 
      <key value="BlogId" /> 
     </layout> 
     </parameter> 
    </configuration> 

AssemblyInfo.cs (juste la dernière ligne)

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

Logger.cs

public class Logger : ILogger 
    { 
     private static ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

     public Logger() 
     { 
      XmlConfigurator.Configure(); 
      logger.Info("NEW LOGGER INSTANCE CREATED"); 
     } 
} 

MISE À JOUR Je l'ai fixé en laissant les clas s qui utilise mon Logger.cs donne son propre fichier .config pour log4net. Maintenant, log4net lit les fichiers .config donnés et cela fonctionne.

Répondre

2

Vous avez défini que la section log4net est dans votre app.config avec:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 

cela signifie que vous devez ajouter le contenu du log4net.config au fichier app.config.