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