Ich benutze log4net die ganze Zeit, aber eine Sache, die ich nie herausgefunden habe, ist, wie man sagt, was im Inneren vor sich geht. Zum Beispiel habe ich in meinem Projekt einen Konsolen-Appender und einen Datenbank-Appender. Ich habe einige Änderungen an der Datenbank und dem Code vorgenommen, und jetzt funktioniert der Datenbank-Appender nicht mehr. Ich werde irgendwann herausfinden, warum, aber es würde sehr helfen, wenn ich sehen könnte, was in log4net vor sich geht.
Erzeugt log4net eine Ausgabe, die ich anzeigen kann, um die Ursache meines Problems zu ermitteln?
C:\tmp\log4net.txt
zu gewechseltC:\log4net.txt
, dann kann es eine Textdatei generieren.<configSections></configSections>
der erste Eintrag unter ist<configuration>
. Andernfalls erhalten Sie einen Fehler.traceOutputOptions="TimeStamp"
undtraceOutputOptions="DateTime"
dasadd
Tag festzulegen, aber es ändert nichts am Inhalt der Protokolldatei. Weiß jemand, wie man log4net so einrichtet, dass die Zeit für jede Zeile / jeden Eintrag in der Ablaufverfolgungsprotokolldatei angezeigt wird?Wenn Sie eine log4net-Konfigurationsdatei verwenden, können Sie das Debuggen dort auch aktivieren, indem Sie den obersten Knoten in Folgendes ändern:
Dies funktioniert, sobald die Konfiguration neu geladen wurde und vorausgesetzt, Ihr Trace-Listener ist ordnungsgemäß eingerichtet.
quelle
Zusätzlich zu der obigen Antwort können Sie diese Zeile verwenden, um das Protokoll in Echtzeit anstelle der Ausgabe c: \ tmp \ log4net.txt anzuzeigen.
In einer Konsolen-App können Sie dies beispielsweise hinzufügen und dann die Ausgabe in Echtzeit verfolgen. Es ist gut, log4net in einem kleinen Test-Harness zu debuggen, um zu sehen, was mit dem Appender passiert, den Sie testen.
quelle
Stellen Sie sicher, dass die Stammanwendung, in der sich Ihr Einstiegspunkt befindet, etwas in log4net protokolliert. Geben Sie eine davon:
Mit 2.0.8 hatte ich eine interessante Situation. Ich habe ein Bibliotheksprojekt und ein Test-Exe-Projekt erstellt, die die Funktionen demonstrieren. Das Bibliotheksprojekt wurde so eingerichtet, dass es Log4net verwendet, ebenso wie das exe-Projekt. Das exe-Projekt verwendete das Assemblyinfo-Attribut, um die Konfiguration zu registrieren, aber ich erhielt weder eine Protokollausgabe an die Konsole noch an die Protokolldatei. Als ich die interne Debug-Protokollierung von log4net aktiviert habe, wurden einige interne Nachrichten an die Konsole geschrieben, aber immer noch keine meiner normalen Protokolle. Es wurden keine Fehler gemeldet. Alles begann zu funktionieren, als ich den obigen Code zu meinem Programm hinzufügte. Log4net wurde ansonsten korrekt eingerichtet.
quelle
Wenn das interne Protokoll nicht genügend Informationen enthält, ist es sehr einfach, den Quellcode zu erstellen und zu debuggen . Wenn Sie dies nicht mit Ihrem Entwicklungsprojekt verwechseln möchten, fügen Sie eine einfache Konsolenanwendung hinzu, die nur eine Nachricht protokolliert, kopieren Sie Ihre Projekte
log4net.config
in diese Anwendung und debuggen Sie die betreffende Klasse.quelle
In log4net 2.0.8 scheint es nicht möglich zu sein, die Protokollierung mit log4net in einer separaten DLL durchzuführen. Wenn ich das versucht habe, sind die Ergebnisse sehr seltsam: Es wird keine Protokollierung mehr durchgeführt. Und die Initialisierung von log4net mit der Debug-Option zeigt keine Fehler.
Wie K0D4 sagte, sollten Sie einen Verweis auf log4net in Ihrem Hauptmodul haben und es sollte einmal beim Start des Programms aufgerufen werden und alles ist in Ordnung.
In der nächsten Version von log4net wird dieser Fehler wahrscheinlich behoben.
quelle