NLog vs log4net te vergelijken

zowel NLog en log4net zijn twee zeer populaire keuzes, bij het selecteren van een logging framework voor. net toepassingen. In deze post, je leert alles over zowel frameworks en de verschillen. Voor degenen onder jullie die één of beide frameworks niet kennen, laten we beginnen met een paar woorden over elk framework.

log4net

waarschijnlijk het oudste logboekraamwerk op het blok, log4net bestaat sinds de introductie van.net. log4net was oorspronkelijk een interne Apache log4j port ontwikkeld door Neoworks Limited terug in 2001. Het project verhuisde snel naar Sourceforge (de Github van 2001) en werd uitgebracht onder de Apache-licentie. Sinds die tijd, log4net is een van de meest populaire keuzes in de.net wereld voor het toevoegen van logging aan toepassingen.

log4net werkt met het concept van appenders, waar logberichten kunnen worden gerouteerd naar verschillende gegevensopslag. Veel appenders zijn geïmplementeerd in de loop van de jaren, zoals loggen op het bestandssysteem, SQL Server, HTTP endpoints, en zelfs NoSQL databases, maar omdat ongestructureerde tekstberichten, log4net en NoSQL niet precies gaan hand in hand.

NLog

terwijl log4net al snel de standaard keuze werd, begonnen alternatieven te verschijnen. Waarschijnlijk de eerste echte concurrent van log4net dominantie was NLog. Oorspronkelijk ontwikkeld door Jarek Kowalski en met pull requests van bijna 100 mensen, NLog is een geweldig alternatief. Terwijl log4net vrij veel stond stil uit 2006, NLog gewoon bleef gaan. Terwijl Jarek leek de stekker eruit te trekken bij het starten bij Google, de gemeenschap leek te stappen en nieuwe releases zijn nog steeds vloeiend.

net als log4net bevat NLog meerdere logdoelen en is het in staat om berichten te loggen naar verschillende gegevensopslag.

configuratie

alle logboekframeworks hebben een soort configuratie nodig, zodat het framework weet wat te loggen en waarheen.

log4net

log4net is geconfigureerd via uw app.config bestand of een dedicated log4net.config:

NLog

NLog kan worden geconfigureerd via zowel XML als C#. De meeste mensen gebruiken XML, omdat dat er al vanaf het begin is en omdat de op C# gebaseerde API niet zo mooi is als nieuwere frameworks zoals Serilog.

Logging Messages

als het gaat om logging berichten van uw toepassing, log4net en NLog werken vrij vergelijkbaar.

log4net

logberichten worden geschreven met behulp van de log4net API:

var log = LogManager.GetLogger(typeof(Bar));log.Debug("Hello World");

extra loginformatie kan worden gekoppeld aan een logbericht met behulp van een reeks verschillende contextuele opties:

hoewel u informatie direct kunt insluiten in logberichten met log4net, wordt semantische logboekregistratie niet ondersteund.

NLog

NLog biedt een API vergelijkbaar met log4net voor het loggen van berichten aan de geconfigureerde set doelen:

var logger = NLog.LogManager.GetCurrentClassLogger();logger.Debug("Hello World");

extra eigenschappen kunnen ook worden bevestigd:

var msg = new LogEventInfo(LogLevel.Debug, "", "Hello World");msg.Properties.Add("Application", "MyCoolApp");logger.Debug(msg);

de recente versie van NLog ondersteunt semantische logging. Om semantisch aan uw logberichten toe te voegen, gebruikt u de accolade-syntaxis:

logger.Info("Order {orderid} created for {user}", 42, "Kenny");

conclusie

het kiezen van een winnaar is niet het doel van deze post. Beide logging frameworks heeft zijn eigen voor-en nadelen.

log4net

voordelen