NLog vs log4net

mind az NLog, mind a log4net két nagyon népszerű választás a.net alkalmazások naplózási keretének kiválasztásakor. Ebben a bejegyzésben mindent megtudhat mind a keretekről, mind a különbségekről. Azoknak, akik nem ismerik az egyik vagy mindkét keretet, kezdjük néhány szóval az egyes keretekről.

log4net

valószínűleg a legrégebbi naplózási keretrendszer a blokkban, a log4net nagyjából a.net bevezetése óta létezik. a log4net eredetileg egy belső Apache log4j port volt, amelyet a Neoworks Limited fejlesztett ki 2001-ben. A projekt gyorsan átkerült a Sourceforge-ra (a GitHub 2001-ben), és Apache Licenc alatt jelent meg. Azóta a log4net az egyik legnépszerűbb választás a.net világban a naplózás hozzáadásához az alkalmazásokhoz.

a log4net az appenderek koncepciójával működik, ahol a naplóüzenetek különböző adattárolókba irányíthatók. Sok appendert valósítottak meg az évek során, például naplózást a fájlrendszerbe, az SQL Server-be, a HTTP végpontokba, sőt a NoSQL adatbázisokba is, azonban strukturálatlan szöveges üzenetek lévén a log4net és a NoSQL nem éppen kéz a kézben járnak.

NLog

míg a log4net gyorsan az alapértelmezett választás lett, alternatívák kezdtek megjelenni. Valószínűleg a log4net dominanciájának első igazi versenytársa az NLog volt. Eredetileg Jarek Kowalski fejlesztette ki, közel 100 ember pull kéréseivel, az NLog nagyszerű alternatíva. Míg a log4net nagyjából mozdulatlanul állt 2006-tól, az NLog csak folytatta. Míg Jarek úgy tűnt, hogy húzza ki a dugót, amikor elindul a Google, a közösség úgy tűnt, hogy fokozzák az új kiadások még mindig folyik.

a log4net-hez hasonlóan az NLog több naplózási célt is tartalmaz, és képes üzeneteket naplózni különböző adattárolókba.

Configuration

minden naplózási keretrendszernek szüksége van valamilyen konfigurációra ahhoz, hogy a keretrendszer tudja, mit és hova kell naplózni.

log4net

a log4net az alkalmazáson keresztül van konfigurálva.konfigurációs fájl vagy dedikált log4net.config:

NLog

az NLog mind XML-en, mind C# – on keresztül konfigurálható. A legtöbb ember XML-t használ, mivel ez már a kezdetektől fogva létezik, és mivel a C# alapú API nem olyan szép, mint az újabb keretek, mint a Serilog.

üzenetek naplózása

amikor az alkalmazásból származó üzenetek naplózásáról van szó, a log4net és az NLog nagyon hasonlóan működik.

log4net

a naplóüzenetek a log4net API használatával íródnak:

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

további naplóinformációk csatolhatók egy naplóüzenethez a különböző kontextusbeli beállítások használatával:

bár a log4net segítségével közvetlenül beágyazhatja az információkat a naplóüzenetekbe, a szemantikai naplózás nem támogatott.

NLog

az NLog a log4net-hez hasonló API-t biztosít az üzenetek naplózásához a beállított célcsoporthoz:

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

további tulajdonságok is csatolhatók:

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

az NLog legújabb verziója támogatja a szemantikai naplózást. Ha szemantikát szeretne hozzáadni a naplóüzenetekhez, használja a göndör zárójel szintaxist:

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

következtetés

a győztes kiválasztása nem a bejegyzés célja. Mindkét naplózási keretrendszernek megvannak a maga előnyei és hátrányai.

log4net

előnyök