Log4Net erstellen von leeren log-Dateien, nicht wirklich Protokollierung
Ich habe ein Problem mit meinem Log4Net Verwendung in meiner Anwendung. Dies ist meine app.config-Datei...
<configuration>
<log4net>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="mylogfile.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
</log4net>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"
/>
rest of app.config under here...
Dies ist an der Spitze von meinem Programm.cs
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Ich habe auch diesen an den Rand meiner form partielle Klasse (ist das ein Duplikat des obigen?)
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Und dieser code auf das form load - (die nichts tut)
log.Info("Initializing...");
log.Fatal("blah");
Den logger erstellt eine Protokolldatei namens "mylogfile.txt" aber nicht wirklich alles schreiben, was in es.
Ich weiß, dass ich was falsch mache, aber ich kann nicht finden, was es leicht 🙁 jede Hilfe wäre genial.
- vermute, es muss gespült werden..
- Fügen Sie interne debugging-und geben Sie uns einen dump.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gewickelt ich es herauszufinden mich Sekunden später. Die app.config falsch war (nicht überraschend, bedenkt, dass ich es schrieb).
Hier ist die funktionierende app.config startup.
Ich Dosen die
und ersetzt es mit log4net.Config.XmlConfigurator.Configure(); (hier ist es, wo es genannt wird, in der Haupt-Programm-Start im Programm.cs).
- Und es funktioniert! Vielen Dank an alle, betrachtet meine Frage 🙂
http://log4net.sourceforge.net/release/1.2.0.30316/doc/manual/faq.html
Aus der Dokumentation:
• Aktivieren der log4net-internen debug-programmatisch müssen Sie die log4net.Helferinnen und Helfer.LogLog.InternalDebugging-Eigenschaft auf true. Offensichtlich ist die früher diese eingestellt ist, desto mehr debug-produziert werden.
• Interne debugging kann auch aktiviert werden, indem ein Wert in der Konfigurationsdatei der Anwendung (nicht der log4net Konfiguration-Datei, es sei denn, Sie log4net Konfiguration ist in der Anwendung config-Datei). Die log4net.Intern.Debuggen der Anwendung werden, muss die Einstellung auf den Wert true. Zum Beispiel:
Diese Einstellung ist, Lesen Sie sofort beim Start ein " bewirkt, dass alle internen debugging-Nachrichten werden emittiert.
• Aktivieren der internen debugging aus einer Konfigurations-Datei, die debug-Attribut auf der log4net Konfiguration-element auf den Wert true. Zum Beispiel:
Verwendung dieser Methode erfordert, dass Ihre Konfigurations-Datei wird geladen, ansonsten wird das Attribut nicht gelesen werden. Wenn Sie brauchen, um das Debuggen der Prozess der Lokalisierung der Datei der Konfiguration, dann verwenden Sie eine der anderen Methoden zum aktivieren der debugging.
Interne debugging-Nachrichten witten die Konsole und an das System.Diagnostik.Trace-system. Wenn die Anwendung nicht über eine Konsole die Meldungen protokolliert, es wird verloren gehen. Beachten Sie, dass eine Anwendung Umleitung der Konsole streamen, indem das System.Console.Aus. Die Trace-system wird standardmäßig das senden der Nachricht mit einer angefügten debugger (wo werden die Meldungen im Ausgabefenster angezeigt). Wenn der Prozess nicht über einen debugger dann die Nachrichten gesendet werden, um das system-debugger. Ein Dienstprogramm wie DebugView von http://www.sysinternals.com kann verwendet werden, erfassen diese Nachrichten.
Ich hatte das gleiche Problem.
Für mein fix, ich hatte zu entfernen
aus meiner assemblyInfo.cs, wenn Sie anrufen log4net.Config.XmlConfigurator.ConfigureAndWatch() im code.