Hat jemand Erfahrung für beide? Wie stapeln sie sich?
Wir planen, eine davon für die Anmeldung in einer Unternehmensanwendung zu verwenden.
Verweise:
BEARBEITEN: Wir haben keine Abhängigkeiten zu nlog oder log4net.
Hat jemand Erfahrung für beide? Wie stapeln sie sich?
Wir planen, eine davon für die Anmeldung in einer Unternehmensanwendung zu verwenden.
Verweise:
BEARBEITEN: Wir haben keine Abhängigkeiten zu nlog oder log4net.
Antworten:
Ich wurde kürzlich beauftragt, einen Prototyp für ein bevorstehendes Projekt zu erstellen. Ich hatte keine Erfahrung mit dem Protokollierungsframework. Ich recherchierte, durchlief Tutorials, erstellte Spielzeug-Apps usw. für einige Tage in Log4Net, NLog und Enterprise Library. Kam 3-4 Wochen später zurück und fügte sie zu einer zusammenhängenden Demo zusammen. Hoffentlich ist einiges davon für Sie nützlich.
Meine Empfehlung für unser Projekt lautet:
Das basiert auf diesen Erkenntnissen (Meinungen!):
Offensichtlich mag ich NLog so weit. Nicht genug, um es zu verwenden, obwohl eine andere Lösung verfügbar ist.
Eine wichtige Überlegung, die nicht viel diskutiert wurde, ist Support und Updates.
Log4Net wurde seit Veröffentlichung der Version 1.2.10 am 19. April 2006 nicht aktualisiert .
Im Gegensatz dazu wird NLog seit 2006 aktiv unterstützt. In Kürze wird NLog 2.0 veröffentlicht, das viele Plattformen unterstützt, die zum Zeitpunkt der letzten Aktualisierung von log4net noch nicht vorhanden waren, wie z.
Nachdem ich kürzlich Erfahrungen mit beiden Frameworks gemacht hatte, dachte ich, ich kann meine Ansichten zu jedem Framework teilen.
Ich wurde gebeten, die Protokollierungsframeworks für eine vorhandene Webanwendung zu evaluieren. Nachdem ich verschiedene Online-Foren durchgesehen hatte, beschränkte ich meine Auswahl auf NLog (v2.0) und log4net (v1.2.11). Hier sind meine Ergebnisse:
Das Einrichten / Starten von NLog ist kinderleicht. Sie gehen das Tutorial Erste Schritte auf ihrer Website durch und sind fertig. Sie bekommen eine gute Vorstellung davon, wie es mit nlog sein könnte. Die Konfigurationsdatei ist so intuitiv, dass jeder die Konfiguration verstehen kann. Beispiel: Wenn Sie die interne Anmeldung festlegen möchten, setzen Sie das Flag im Header-Knoten der Nlog-Konfigurationsdatei an der Stelle, an der Sie es erwarten würden. In log4net setzen Sie im Abschnitt appSettings von web.config verschiedene Flags.
In log4net gibt die interne Protokollierung keinen Zeitstempel aus, was ärgerlich ist. In Nlog erhalten Sie ein schönes Protokoll mit Zeitstempeln. Ich fand es sehr nützlich in meinen Bewertungen.
Filter in log4net - Überprüfen Sie besser meine Frage - log4net-Filter - Schreiben und Filtern, um Protokollnachrichten zu ignorieren. Wenn Sie eine Antwort / Lösung dafür finden, lassen Sie es mich bitte wissen. Ich verstehe, es gibt eine Problemumgehung für diese Frage, da Sie Ihren eigenen benutzerdefinierten Filter schreiben können. Aber etwas, das in log4net nicht leicht verfügbar ist.
Leistung - Ich habe ungefähr 3000 Protokollnachrichten mit einer gespeicherten Prozedur in der Datenbank protokolliert. Ich habe simple for loop (int i = 0; i <3000; i ++ ... verwendet, um dieselbe Nachricht 3000 Mal zu protokollieren. Für die Schreibvorgänge: log4net AdoAppender hat fast doppelt so viel Zeit benötigt wie NLog.
Log4net unterstützt keinen asynchronen Appender.
Für mich war es ein ausreichender Vergleich, NLog als Protokollierungsframework zu wählen. :) :)
Wenn Sie spät zu diesem Thread kommen, sollten Sie einen Blick zurück auf die .Net Base Class Library (BCL) werfen. Viele Leute haben die Änderungen zwischen .Net 1.1 und .Net 2.0 verpasst, als die TraceSource- Klasse eingeführt wurde (ca. 2005).
Die Verwendung der TraceSource ist analog zu anderen Protokollierungsframeworks, mit detaillierter Steuerung der Protokollierung, Konfiguration in app.config / web.config und programmgesteuertem Zugriff - ohne den Overhead des Unternehmensanwendungsblocks.
Es gibt auch eine Reihe von Vergleichen: "log4net vs TraceSource"
Für uns liegt der Hauptunterschied in der Gesamtleistung ...
Schauen Sie sich Logger.IsDebugEnabled
NLog im Vergleich zu Log4Net an. Aus unseren Tests geht hervor, dass NLog weniger Overhead hat und genau danach streben wir (Dinge mit geringer Latenz).
Prost, Florian
Schauen Sie sich zuerst den Rest Ihres Stapels an.
Wenn Sie NHibernate verwenden, wird Log4Net direkt verwendet. Andere Frameworks verfügen möglicherweise über andere spezifische Logger, die sie benötigen.
Davon abgesehen: beide funktionieren gut.
Ich habe mich selbst für Log4Net entschieden. Die Konfiguration kann schwierig sein, und wenn sie nicht richtig konfiguriert ist, ist es schwierig herauszufinden, was schief gelaufen ist. Aber Sie können fast alles tun lassen, was Sie von einem Logger erwarten.
Wenn Sie kein ständiges Problem mit Log4Net haben, habe ich hier einen Artikel darüber geschrieben, wie Sie damit beginnen können: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Nun, ich habe die Enterprise-Bibliothek für Datenbankprotokollierungsaufgaben verwendet und bin jetzt aufgrund eines Leistungsengpasses zu NLog gewechselt.
einige Vergleichsinformationen:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Ich stimme dem oben Gesagten zu und bevorzuge nLog. Entlib ist unnötig aufgebläht.
Betreff: Log4net Eine Sache, die ich mit log4net IMMER bekomme, ist zu vergessen, der global.asax Folgendes hinzuzufügen, um die Komponente zu initiieren:
log4net.Config.XmlConfigurator.Configure();
Wenn Sie hierher gehen, finden Sie eine umfassende Matrix, die sowohl die NLog- und Log4Net-Bibliotheken als auch die Enterprise Lib und andere Produkte enthält.
Jemand könnte argumentieren, dass die Matrix so erstellt wurde, dass die Merkmale der einzigen in der Matrix vorhandenen kommerziellen Bibliothek hervorgehoben werden. Ich denke, es ist wahr, aber es war trotzdem nützlich, meine Wahl gegen NLog zu treffen.
Grüße
Wie ich bemerkt habe, sperrt log4net die Ausgabedateien während der gesamten Ausführung der Anwendung, sodass Sie sie nicht löschen können. Ansonsten sind sie ähnlich.
Also bevorzuge ich NLog.
Schamloser Plug für ein Open Source-Projekt, das ich ausführe, aber angesichts der lebhaften Diskussion darüber, welches .NET-Protokollierungsframework aktiver ist, dachte ich, ich würde einen obligatorischen Link zu Serilog veröffentlichen .
Für die Verwendung in einer Anwendung ähnelt Serilog log4net (und greift stark darauf zurück). Im Gegensatz zu anderen .NET-Protokollierungsoptionen geht es bei Serilog jedoch darum, die Struktur von Protokollereignissen für die Offline-Analyse beizubehalten. Wenn Sie schreiben:
Log.Information("The answer is {Answer}", 42);
Die meisten Protokollierungsbibliotheken rendern die Nachricht sofort in eine Zeichenfolge. Serilog kann dies auch, behält jedoch die { Answer: 42 }
Eigenschaft bei, sodass Sie später mithilfe eines von mehreren NoSQL-Datenspeichern Ereignisse basierend auf dem Wert von ordnungsgemäß abfragen können Answer
.
Wir stehen kurz vor 1.0 und unterstützen alle modernen Plattformen (.NET 4.5, Windows Store und Windows Phone 8).
Ich habe auch NLog unterstützt, weil es auch mit nicht verwaltetem Code funktioniert. Ich nehme an, es könnte möglich sein, log4net und log4cxx zusammen zu verwenden, aber NLog verarbeitet sowohl verwalteten als auch nicht verwalteten Code sofort.
Ich habe mir auch Common.Logging angesehen , eine Fassade, die eine Abstraktion der Protokollierungs-API ermöglicht und log4net, NLog und Entreprise Library unterstützt. Ich glaube nicht, dass ich es verwenden werde, aber ich mag, wie sie Lambdas verwenden, um die Leistung zu verbessern, wenn die Protokollierung deaktiviert ist (eine Funktion, die mit NLog und wahrscheinlich anderen geteilt wird).
Sie können auch den Microsoft Enterprise Library-Protokollierungsblock in Betracht ziehen . Es kommt mit netten Designer.
Basierend auf meiner Erfahrung, SmartInspect schlägt sowohl NLog und log4net.
Es ist extrem einfach zu bedienen, die Dokumentation ist großartig und Sie können zuvor protokollierte Nachrichten anzeigen und filtern mit ihrem interaktiven Protokoll-Viewer , was ein großer Vorteil für die reale Welt ist.
Eine Sache, die mir gefällt, sind die Registerkartenansichten von Daten, wie die Browser-Registerkarten in Chrome. Jede Registerkarte kann eine andere gefilterte Ansicht des Protokolls bereitstellen.