2010-08-25 8 views
23

Ich habe zwei Projekte identisch für log4net konfiguriert. Ein Projekt wird protokolliert. das andere protokolliert jedoch überhaupt nicht.log4net liest nicht aus app.config

Die Logger in dem Projekt, das nicht IsFatalEnabled = false kehrt Protokollierung ist, IsErrorEnabled = false, IsWarnEnabled = false, IsInforEnabled = false und IsDebugEnabled = false.

Ich habe von einem Projekt zum anderen kopiert und eingefügt, die Datei vollständig ersetzt und versucht, alle Leerzeichen zu entfernen.

Was könnte dazu führen, dass das eine Projekt nicht korrekt die richtigen Ebenen aus der app.config liest?

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

Antwort

40

Es scheint, dass die Datei app.config nicht von log4net beobachtet werden konfiguriert wurde.

Ich habe die folgende Zeile AssemblyInfo.cs und die Protokollierung aktiviert ist jetzt:

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

Seltsam, da ich diese Zeile nicht zum Projekt hinzugefügt habe, die arbeiten.

EDIT:

Sieht aus wie das Projekt, das die Linie schließlich hatte arbeitete. Ich muss es vergessen haben.

// 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

meinem Fall war ungefähr das gleiche - ich ein Projekt in ein anderes Projekt kopiert, aber log4net in benutzerdefinierten Assembly mit meinem Utility-Code „verpackt“ - obwohl die magische Linie, die Sie im neuen Projekt war erwähnen, es fehlte aus AssemblyInfo.cs meiner benutzerdefinierten Assembly (ich hatte den Eindruck, dass die gesamte Konfiguration in der Assembly ausgeführt werden musste, die den Einstiegspunkt enthielt - falsch) –

+2

Ich musste dies für eine VB.NET-Anwendung tun ... Syntax: