2010-08-25 6 views
23

J'ai deux projets configurés de manière identique pour log4net. Un projet se connecte correctement; Cependant, l'autre ne se connecte pas du tout.log4net ne lit pas à partir de app.config

Le Logger dans le projet qui est pas le retour, l'exploitation forestière IsFatalEnabled = falseIsErrorEnabled = false, IsWarnEnabled = false, IsInforEnabled = false et IsDebugEnabled = false.

J'ai copié et collé d'un projet à l'autre, j'ai complètement remplacé le fichier et essayé de supprimer tous les espaces.

Qu'est-ce qui pourrait empêcher un projet de lire correctement les niveaux corrects à partir du fichier app.config?

app.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="logfile.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date: %-5level – %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

Program.cs

using log4net; 

class Program 
{ 
    private static readonly ILog Log = LogManager.GetLogger("SO"); 

    static void Main(string[] args) 
    { 
     Log.Info("SO starting"); 
    } 
} 

Répondre

40

Il semble que le fichier app.config n'a pas été configuré pour être regardé par log4net.

I a ajouté la ligne suivante AssemblyInfo.cs et l'exploitation forestière est maintenant activée:

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

bizarre, puisque je ne l'ai pas ajouter cette ligne au projet qui travaillait.

EDIT:

On dirait que le projet qui travaillait n'ont la ligne après tout. Je dois avoir oublié.

// This will cause log4net to look for a configuration file 
// called [ThisApp].exe.config in the application base 
// directory (i.e. the directory containing [ThisApp].exe) 
// The config file will be watched for changes. 
[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
+2

mon cas était à peu près le même - je copiais un projet à un autre projet, mais « enveloppé » log4net dans l'assemblage personnalisé avec mon code utilitaire - bien que la ligne magique que vous mentionnez était dans le nouveau projet, il était absent de AssemblyInfo.cs de mon assembly personnalisé (j'ai eu l'impression que toute la configuration devait être faite dans l'assembly qui contenait le point d'entrée - faux) –

+2

Je devais faire cela pour une application VB.NET ... syntaxe:

Questions connexes