NLog vs log4net

både NLog och log4net är två mycket populära val när man väljer ett loggningsramverk för.NET-applikationer. I det här inlägget kommer du att lära dig allt om både ramar och skillnader. För er som inte känner till en eller båda ramarna, låt oss börja med några ord om varje ram.

log4net

förmodligen den äldsta loggningsramen på blocket, log4net har funnits ganska mycket sedan.Net introducerades. log4net var ursprungligen en intern Apache log4j port utvecklad av Neoworks Limited redan 2001. Projektet flyttade snabbt till Sourceforge (GitHub 2001) och släpptes under Apache-licensen. Sedan dess har log4net varit ett av de mest populära valen i.net-världen för att lägga till loggning i applikationer.

log4net arbetar med begreppet appenders, där loggmeddelanden kan dirigeras till olika datalager. Många appenders har implementerats under åren, som att logga in på filsystemet, SQL Server, HTTP-slutpunkter och till och med NoSQL-databaser, men eftersom de är ostrukturerade textmeddelanden går log4net och NoSQL inte exakt hand i hand.

NLog

medan log4net snabbt blev standardvalet började alternativ dyka upp. Förmodligen var den första riktiga konkurrenten till log4nets dominans NLog. Ursprungligen utvecklad av Jarek Kowalski och med dragförfrågningar från nästan 100 personer är NLog ett bra alternativ. Medan log4net ganska mycket stod stilla från 2006, fortsatte NLog bara. Medan Jarek tycktes dra ur kontakten när man började på Google, verkade samhället öka och nya utgåvor flyter fortfarande.

liksom log4net innehåller NLog flera loggmål och kan logga meddelanden till olika datalager.

konfiguration

alla loggningsramar behöver någon form av konfiguration för att ramverket ska veta vad som ska loggas och var.

log4net

log4net konfigureras via din app.konfigurationsfil eller en dedikerad log4net.config:

NLog

NLog kan konfigureras genom både XML och C#. De flesta använder XML, eftersom det har varit där från början och eftersom det C# – baserade API är inte lika trevligt som nyare ramar som Serilog.

Loggningsmeddelanden

när det gäller loggningsmeddelanden från din applikation fungerar log4net och NLog ganska lika.

log4net

loggmeddelanden skrivs med log4net API:

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

ytterligare logginformation kan bifogas ett loggmeddelande med hjälp av en rad olika kontextuella alternativ:

medan du kan bädda in information direkt i loggmeddelanden med log4net stöds inte semantisk loggning.

NLog

NLog tillhandahåller ett API som liknar log4net för att logga meddelanden till den konfigurerade uppsättningen mål:

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

ytterligare egenskaper kan också fästas:

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

den senaste versionen av NLog stöder semantisk loggning. Om du vill lägga semantisk till dina loggmeddelanden, använda lockigt brace syntax:

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

slutsats

att välja en vinnare är inte målet med detta inlägg. Båda loggningsramarna har sina egna fördelar och nackdelar.

log4net

fördelar