Vor kurzem wurde ich beauftragt, für ein bevorstehendes Projekt einen Prototyp für ein Holzscheit zu erstellen. Ich hatte keine Erfahrung mit Logging-Frameworks. Ich recherchierte, lief durch Tutorials, machte Spielzeug-Anwendungen, etc. auf Log4Net, NLog, und Enterprise Library für ein paar Tage. 3-4 Wochen später kam ich zurück und fügte sie zu einer zusammenhängenden Demo zusammen. Ich hoffe, dass einige dieser Informationen für Sie nützlich sind.
Meine Empfehlung für unser Projekt lautet wie folgt:
- Verwenden Sie eine Protokollierungsfassade (z. B. Common.Logging , SimpleLoggingFacade ), um direkte Abhängigkeiten zu vermeiden.
- Wenn wir die Enterprise Library für andere Einrichtungen verwenden, sollten wir sie auch für die Protokollierung einsetzen.
- Wenn wir am Ende etwas verwenden, das von Log4Net abhängig ist, verwenden Sie Log4Net.
- Wenn keiner der oben genannten Punkte zutrifft, verwenden Sie NLog. Was ich bevorzugen würde.
Das beruht auf diesen Erkenntnissen (Meinungen!):
- Alle 3 Frameworks sind fähig und können einige anspruchsvolle Dinge tun. Wir wollen eine qualitativ hochwertige Lösung, aber offen gesagt brauchen wir keine extrem hohe Leistung oder 60 Arten von Ereignissen.
- Alle 3 haben sehr ähnliche Grundkonzepte.
- Jede hat ihre eigenen coolen Tricks, wie z. B. ein wirklich fortschrittliches Routing oder dynamische Log-Dateinamen, das Kürzen von Dateien, usw.
- Alle 3 sind auf ihre Weise ziemlich gut dokumentiert.
- Für einen völligen Neuling wie mich waren sie anfangs alle ein wenig unangenehm. Bei den Grundlagen gibt es keine drastischen Unterschiede. Ich bin darüber hinweggekommen.
- Als ich einige Wochen später erneut nachhakte, war NLog eindeutig am leichtesten wieder aufzunehmen. Ich brauchte nur sehr wenig Auffrischung. Bei Log4Net musste ich ein paar Online-Beispiele nachschlagen, um loszulegen. Bei EntLib habe ich aufgegeben und die Tutorials noch einmal ganz von vorne gemacht - ich war völlig verloren.
- Ich konnte nicht herausfinden, wie ich EntLib dazu bringe, einige Dinge zu tun, wie z.B. sich in der Datenbank anzumelden. Es könnte einfach sein, aber es war jenseits meines Zeitlimits.
- Log4Net und NLog haben einen kleinen In-Code-Fußabdruck. EntLib ist spammy, aber ich würde eine Fassade über sie sowieso verwenden.
- Ich habe EntLib versehentlich falsch konfiguriert und es hat mich zur Laufzeit darauf hingewiesen. Log4Net tat dies nicht. Bei NLog habe ich nicht versehentlich eine falsche Konfiguration vorgenommen.
- EntLib kommt mit einem gut aussehenden app.config-Editor, den Sie zu 100% brauchen. NLog hat ein Schema für die Konfigurationsdatei, so dass Sie "Intellisense" erhalten. Log4Net kommt mit nada.
Offensichtlich gefällt mir NLog bis jetzt. Allerdings nicht genug, um es zu benutzen, obwohl eine andere Lösung verfügbar ist.