NLog vs log4net

Både NLog og log4net er to svært populære valg, når du velger en logging rammeverk FOR. NET applikasjoner. I dette innlegget vil du lære alt om både rammer og forskjeller. For de av dere som ikke kjenner en eller begge rammene, la oss starte med noen få ord om hvert rammeverk.

log4net

trolig den eldste logging rammeverk på blokken, log4net har eksistert ganske mye SIDEN.NET ble introdusert. log4net var opprinnelig en intern Apache log4j port utviklet Av Neoworks Limited tilbake i 2001. Prosjektet flyttet raskt til Sourceforge (GitHub i 2001) og ble utgitt Under Apache-lisensen. Siden den tiden har log4net vært et AV DE mest populære valgene I. NET-verdenen for å legge til logging i applikasjoner.

log4net fungerer med begrepet appenders, der loggmeldinger kan rutes til ulike datalager. Mange appenders har blitt implementert i løpet av årene, som å logge på filsystemet, SQL Server, HTTP-endepunkter og Til Og Med NoSQL-databaser, men å være ustrukturerte tekstmeldinger, log4net og NoSQL går ikke akkurat hånd i hånd.

NLog

mens log4net raskt ble standardvalget, begynte alternativer å dukke opp. Sannsynligvis den første virkelige konkurrenten til log4nets dominans Var NLog. Opprinnelig utviklet Av Jarek Kowalski og med pull forespørsler fra nesten 100 personer, Er NLog et flott alternativ. Mens log4net ganske mye sto stille fra 2006, Fortsatte NLog bare. Mens Jarek syntes å trekke pluggen når du starter På Google, samfunnet syntes å gå opp og nye utgivelser er fortsatt flyter.

som log4net inneholder NLog flere loggmål og kan logge meldinger til ulike datalager.

Konfigurasjon

Alle loggrammer trenger en slags konfigurasjon, for at rammen skal vite hva som skal logges og til hvor.

log4net

log4net er konfigurert via appen din.config fil eller en dedikert log4net.config:

NLog

NLog kan konfigureres GJENNOM BÅDE XML og C#. De fleste bruker XML, siden DET har vært der fra begynnelsen, og Siden C # – BASERT API ikke er så fint som nyere rammer som Serilog.

Logging Meldinger

når det gjelder å logge meldinger fra søknaden din, fungerer log4net og NLog ganske likt.

log4net

Loggmeldinger skrives ved hjelp av log4net API:

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

Ytterligere logginformasjon kan knyttes til en loggmelding ved hjelp av en rekke ulike kontekstuelle alternativer:

mens du kan bygge inn informasjon direkte i loggmeldinger med log4net, støttes ikke semantisk logging.

NLog

NLog gir EN API som ligner log4net for logging av meldinger til det konfigurerte settet med mål:

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

Ytterligere egenskaper kan også festes:

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

den siste versjonen av NLog støtter semantisk logging. Hvis du vil legge til semantisk i loggmeldingene, bruker du syntaksen krøllete klammeparentes:

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

Konklusjon

Å Plukke en vinner Er ikke målet med dette innlegget. Begge loggrammer har sine egne fordeler og ulemper.

log4net

Fordeler