NLog vs log4net

både NLog og log4net er to meget populære valg, når du vælger en logning rammer for.NET applikationer. I dette indlæg lærer du alt om både rammer og forskellene. For dem af jer, der ikke kender en eller begge rammer, lad os starte med et par ord om hver ramme.

log4net

sandsynligvis den ældste logningsramme på blokken, log4net har eksisteret stort set siden.net blev introduceret. log4net var oprindeligt en intern Apache log4j port udviklet af Neoorks Limited tilbage i 2001. Projektet flyttede hurtigt til Sourceforge (GitHub fra 2001) og blev frigivet under Apache-licensen. Siden den tid har log4net været et af de mest populære valg i.net-verdenen for at tilføje logning til applikationer.

log4net arbejder med begrebet tilføjere, hvor logmeddelelser kan dirigeres til forskellige datalagre. Mange appenders er blevet implementeret i årenes løb, som at logge på filsystemet, HTTP-Server, HTTP-slutpunkter og endda noskl-databaser, men at være ustrukturerede tekstbeskeder, går log4net og Noskl ikke nøjagtigt hånd i hånd.

NLog

mens log4net hurtigt blev standardvalget, begyndte alternativer at dukke op. Sandsynligvis den første rigtige konkurrent til log4nets dominans var NLog. Oprindeligt udviklet af Jarek Kovalski og med pull anmodninger fra næsten 100 mennesker, NLog er et godt alternativ. Mens log4net stort set stod stille fra 2006, fortsatte NLog bare. Mens Jarek syntes at trække stikket, da han startede hos Google, syntes samfundet at træde op, og nye udgivelser flyder stadig.

ligesom log4net indeholder NLog flere logmål og er i stand til at logge meddelelser til forskellige datalagre.

konfiguration

alle logningsrammer har brug for en slags konfiguration, for at rammen kan vide, hvad man skal logge og hvor.

log4net

log4net er konfigureret via din app.config fil eller en dedikeret log4net.config:

NLog

NLog kan konfigureres via både C#og C#. De fleste mennesker bruger HML, da der har været der fra starten, og da C# baseret API er ikke så rart som nyere rammer som Serilog.

logning af meddelelser

når det kommer til at logge meddelelser fra din applikation, fungerer log4net og NLog temmelig ens.

log4net

logmeddelelser skrives ved hjælp af log4net API:

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

yderligere logoplysninger kan knyttes til en logmeddelelse ved hjælp af en række forskellige kontekstuelle indstillinger:

mens du kan integrere oplysninger direkte i logmeddelelser med log4net, understøttes semantisk logning ikke.

NLog

NLog giver en API, der ligner log4net til logning af meddelelser til det konfigurerede sæt mål:

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

yderligere egenskaber kan også vedhæftes:

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

den seneste version af NLog understøtter semantisk logning. Hvis du vil føje semantisk til dine logmeddelelser, skal du bruge syntaksen for curly brace:

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

konklusion

at vælge en vinder er ikke målet med dette indlæg. Begge logning rammer har sine egne fordele og ulemper.

log4net

fordele