2009-10-11 12 views
5

(Subjektiv)Welche anderen Alternativen zur log4net-Protokollierung gibt es?

Ich bin auf der Suche nach, was Sie verwenden, um die Anmeldung in Ihrer Anwendung durchzuführen. Diese log4net-Sache bereitet mir Kopfschmerzen. Gibt es da draußen eine bessere Antwort oder gibt es nur eine Lösung? Ich weiß, das System.Diagnostics.Trace-Subsystem ist sehr fähig, sollte ich auf diesem Layer?

+0

Warum Sie nicht Ihre Anforderungen/Schmerzen mit log4net definieren? Es ist ziemlich praktisch, sobald man sich daran gewöhnt hat. – ripper234

+0

Siehe Kommentare zu Rippos Post für einige Probleme mit log4net. –

Antwort

7

NLog ist wahrscheinlich der andere große Spieler in diesem Bereich. Außerdem gibt es eine application bloc in Entreprise-Bibliothek, die für die Verfolgung und Protokollierung gewidmet ist.

+1

+1 für NLog, habe es nicht benutzt gesehen Ich werde es mir ansehen. –

3

Warum nicht nur die .NET-Klassen für die Protokollierung verwenden?

Mit Custom-Listeners können Sie fast alles für die Protokollierung tun, können Filter anwenden, Ihre Protokolle auf mehrere Ziele, Datenbanken, Dateien, Netzwerk, was auch immer.

Nur aufpassen, was das .NET-Framework kann, werden Sie überrascht sein.

+1

Ich dachte über diesen Ansatz nach. Die größte Herausforderung besteht darin, dass Sie immer noch alle Writer für Thread-Sicherheit implementieren und die Client-API-Aufrufe umhüllen, um eine String-Formatierung zu verhindern oder die Anwendung zu stürzen. Da die meiste Protokollierung in einem catch-Block erfolgt, ist das Generieren von Exceptions schlechtes mojo. Immer noch ein praktikabler Ansatz, um die Mechanik zu nutzen, aber es endet immer noch damit, dass es hauptsächlich hausgemacht ist. –

2

Versuchen Elmah seine ziemlich einfach, Geist Sie log4net nicht so schlimm ist, wenn Sie Ihren Kopf in sie erhalten ....

Was Ihre Kopfschmerzen eigentlich sind?

+2

Meist Probleme mit der Konsistenz bei einer Multi-Instanz-Anwendung. Das und das Ganze ist ziemlich intolerant. Wenn zum Beispiel ein Logger ausfällt, werden andere Logger nicht aufgerufen. Es ist auch sehr nervig in NUnits, die eine Fehlerausgabe aufgrund von File-Lock-Kollisionen mit der tatsächlichen Software erzeugen. Dies liegt hauptsächlich an der Art, wie wir Webservices testen, indem wir den Asp.net-Host in-proc ausführen, ohne die web.config zu "spezialisieren". –

+0

@ csharptest.net: Nicht ganz sicher, was du meinst. Log4net ist fail-stop von Entwurf; siehe http://logging.apache.org/log4net/release/faq.html unter "Ist log4net ein zuverlässiges Logging-System?". Wenn Sie darauf angewiesen sind, dass die Protokollierung immer funktioniert, ist log4net nicht für Sie geeignet. – TrueWill

1

Wir verwenden die Enterprise Library ausschließlich in unserer Unternehmensumgebung (Logging Block). Und ich habe vor kurzem begonnen, Log4Net für persönliche Projekte zu verwenden.

Aus Erfahrung ist die Enterprise Library, wenn auch leistungsfähig, ein großer Schmerz, um zum Laufen zu kommen. Nicht nur von dem Versuch herauszufinden, welche DLL zu verwenden ist, sondern die Konfiguration kann unhandlich werden.

Auf der anderen Seite, ich habe Log4Net als sehr einfach und Sie können in kürzester Zeit ausgeführt werden; buchstäblich in weniger als einer Stunde.

Zugegeben, ich bin ein MS-Fanboy (ok, nicht wirklich, aber sie sind der Grund, dass ich meinen Lebensunterhalt verdienen kann) und in der Regel mit MS gehen. Ich habe jedoch die Empfehlung ausgesprochen, bei der Arbeit zu Log4Net zu migrieren. Die Einfachheit ist wirklich erfrischend.

0

Werfen Sie einen Blick auf Common.Logging. Es funktioniert mit allen wichtigen Logging-Frameworks (system.diagnostics, log4net, nlog, entreprise library) und ermöglicht es Ihnen, Logging-Frameworks von der Konfiguration zu wechseln.

Aus meiner persönlichen Erfahrung - Ich habe .NET Tracing in einer Unternehmensumgebung, die uns nicht erlaubt, Opensource zu verwenden, und nachdem wir die Rolling File Tracelistener perfektioniert, war es ziemlich einfach zu bedienen. Jetzt benutze ich log4net und es ist ziemlich nett, aber gewöhnungsbedürftig.

3

Es gibt durchaus ein paar .NET Logging-Bibliotheken und Tools gibt, ist hier eine umfangreiche Liste:

http://www.dotnetlogging.com/

Vielleicht haben Sie auch einen Blick auf unsere .NET Logging Produkt SmartInspect, nehmen wollen, die bietet umfangreiche Logging-Funktionen (im Gegensatz zu den Nur-Text-Logging-Funktionen der meisten anderen Logging-Tools) und kommt mit einem Log-Viewer und optional Log-Server-Anwendung.

1

Ich weiß, diese Frage ist zu alt und Sie suchen eine Alternative zu log4net, aber glauben Sie mir log4net ist die beste Logging-Lösung und wird am häufigsten verwendet und bietet auch eine große Auswahl an Log-Listener als jedes andere Logging-Framework.Außerdem können Sie sogar einen benutzerdefinierten Appender zusammen mit den eingebauten Appendern implementieren. Für diejenigen, die Probleme beim Konfigurieren von log4net haben, können Sie den folgenden Post verwenden, der Schritt für Schritt Anleitung beschreibt, damit es funktioniert.

Log4Net section in Web.Config generates Error

glücklich Protokollierung :)