So melden Sie sich mit Log4net in C # an

Wenn du schreibst Computercode In C # ist es eine gute Idee, Protokollierungscode einzuschließen. Auf diese Weise wissen Sie, wo Sie suchen müssen, wenn etwas schief geht. Die Java-Welt tut dies seit Jahren. Sie können log4net für diesen Zweck verwenden. Es ist Teil von Apache log4j 2, einem beliebten Open-Source-Protokollierungsframework.

Dies ist nicht das einzige .NET-Protokollierungsframework. da sind viele. Die Apache name ist vertrauenswürdig und das ursprüngliche Java-Protokollierungsframework gibt es seit mehr als 15 Jahren.

Warum ein Log4net-Protokollierungsframework verwenden?

Wenn eine Anwendung oder ein Server abstürzt, fragen Sie sich, warum. War es ein Hardwarefehler, Malware, vielleicht ein Denial-of-Service-Angriff oder eine seltsame Kombination von Schlüsseln, die es schafft, alle Ihre Codeprüfungen zu umgehen? Du weißt es einfach nicht.

Sie müssen herausfinden, warum ein Absturz aufgetreten ist, damit er korrigiert werden kann. Wenn die Protokollierung aktiviert ist, können Sie möglicherweise sehen, warum dies passiert ist.

instagram viewer

Anfangen

Laden Sie die log4net-Datei von der Apache log4net-Website herunter. Überprüfen Sie die Integrität der heruntergeladenen Dateien mithilfe der PGP-Signatur oder der MD5-Prüfsummen. Die Prüfsummen sind nicht so starke Indikatoren wie die PGP-Signatur.

Verwenden von Log4net

Log4net unterstützt sieben Protokollierungsstufen von keiner bis zu allen mit zunehmender Priorität. Diese sind:

  1. AUS
  2. TÖDLICH
  3. ERROR
  4. WARNEN
  5. DIE INFO
  6. DEBUGGEN
  7. ALLE

Die höheren Ebenen umfassen alle niedrigeren. Verwenden Sie beim Debuggen DEBUGGEN zeigt alles, aber in der Produktion interessieren Sie sich vielleicht nur für FATAL. Diese Auswahl kann auf Komponentenebene programmgesteuert oder in einer XML-Konfigurationsdatei getroffen werden.

Logger und Appender

Aus Gründen der Flexibilität verwendet log4net Logger, Appender und Layouts. Ein Logger ist ein Objekt, das die Protokollierung steuert und eine Implementierung der ILog-Schnittstelle ist Gibt fünf boolesche Methoden an: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled und IsFatalEnabled. Außerdem werden die fünf Methoden Debug, Info, Warn, Error und Fatal sowie Überladungen und fünf formatierte Zeichenfolgenversionen angegeben. Die vollständige ILog-Oberfläche finden Sie im log4net-Online-Handbuch.

Loggern wird eine der Ebenen zugewiesen, jedoch nicht ALL oder OFF, sondern nur die anderen fünf.

Appender steuern, wohin die Protokollierung geht. Es kann sich in einer Datenbank, in einem speicherinternen Puffer, in der Konsole, auf einem Remote-Host, in einer Textdatei mit fortlaufenden Protokollen, im Windows-Ereignisprotokoll oder sogar in E-Mails über SMTP befinden. Insgesamt gibt es 22 Appender, die kombiniert werden können, sodass Sie eine große Auswahl haben. Anhänge werden an einen Logger angehängt (daher der Name).

Appender filtern Ereignisse, indem sie Teilzeichenfolgen, Ereignisebene, Ebenenbereich und den Start des Loggernamens abgleichen.

Layouts

Schließlich gibt es sieben Layouts, die einem Appender zugeordnet werden können. Diese steuern, wie die Nachricht des Ereignisses protokolliert wird, und können Ausnahmetext, Zeitstempellayouts und enthalten XML-Elemente.

Mit XML konfigurieren

Die Konfiguration kann zwar programmgesteuert erfolgen, aber auch mit XML-Konfigurationsdateien. Warum würden Sie Konfigurationsdateien Codeänderungen vorziehen? Ganz einfach, es ist viel einfacher, einen Support-Mitarbeiter eine Änderung an einer Konfigurationsdatei vornehmen zu lassen, als einen Programmierer dazu zu bringen, Code zu ändern, eine neue Version zu testen und erneut bereitzustellen. Konfigurationsdateien sind also der richtige Weg. Der einfachste Weg ist das Hinzufügen von App.config zu Ihrem Projekt, wie im folgenden Beispiel gezeigt:

1.0utf-8





















In der Online-Dokumentation zu log4net werden alle Felder der Konfigurationsdatei erläutert. Nachdem Sie App.config eingerichtet haben, fügen Sie mit log4net und dieser Zeile Folgendes hinzu:

[Assembly: log4net. Konfig. XmlConfigurator (Watch = true)]

Außerdem muss der eigentliche Logger mit einem Aufruf von LogManager abgerufen werden. GetLogger (...). Der GetLogger wird normalerweise mit dem Typ (Klasse) aufgerufen, in dem er verwendet wird. Dieser Funktionsaufruf ruft jedoch auch Folgendes ab:

System. Betrachtung. MethodBase. GetCurrentMethod (). DeclaringType

Dieses Beispiel zeigt beide mit einem Kommentar, sodass Sie auswählen können.

mit log4net;
[Assembly: log4net. Konfig. XmlConfigurator (Watch = true)]
Namespace gvmake
{
Klassenprogramm
{
private static readonly ILog log = LogManager. GetLogger (System. Betrachtung. MethodBase. GetCurrentMethod
() .DeclaringType);
// private statische schreibgeschützte ILog log = LogManager. GetLogger (typeof (Programm));
statische Leere Main (string [] args)
{
Log. Debug ("Anwendungsstart");
}
}
}