NLog vs log4net

Sia NLog che log4net sono due scelte molto popolari, quando si seleziona un framework di registrazione per le applicazioni. NET. In questo post, imparerai tutto su entrambi i framework e le differenze. Per quelli di voi che non conoscono uno o entrambi i framework, iniziamo con alcune parole su ciascun framework.

log4net

Probabilmente il più antico framework di registrazione sul blocco, log4net è esistito praticamente da quando.NET è stato introdotto. log4net era originariamente una porta log4j Apache interna sviluppata da Neoworks Limited nel 2001. Il progetto si trasferì rapidamente a Sourceforge (il GitHub del 2001) e fu rilasciato sotto la licenza Apache. Da quel momento, log4net è stata una delle scelte più popolari nel mondo.NET per l’aggiunta di registrazione alle applicazioni.

log4net funziona con il concetto di appenders, in cui i messaggi di log possono essere indirizzati a diversi archivi di dati. Molti appenders sono stati implementati nel corso degli anni, come la registrazione al file system, SQL Server, endpoint HTTP e persino database NoSQL, tuttavia essendo messaggi di testo non strutturati, log4net e NoSQL non vanno esattamente di pari passo.

NLog

Mentre log4net divenne rapidamente la scelta predefinita, le alternative cominciarono a comparire. Probabilmente il primo vero concorrente del dominio di log4net era NLog. Originariamente sviluppato da Jarek Kowalski e con richieste di pull da quasi 100 persone, NLog è un’ottima alternativa. Mentre log4net praticamente si fermava dal 2006, NLog continuava ad andare avanti. Mentre Jarek sembrava staccare la spina quando si inizia a Google, la comunità sembrava intensificare e le nuove versioni sono ancora in corso.

Come log4net, NLog contiene più destinazioni di log ed è in grado di registrare i messaggi a vari archivi di dati.

Configurazione

Tutti i framework di registrazione hanno bisogno di un qualche tipo di configurazione, in modo che il framework sappia cosa registrare e dove.

log4net

log4net è configurato tramite la tua app.file di configurazione o un log4net dedicato.config:

NLog

NLog può essere configurato tramite XML e C#. La maggior parte delle persone usa XML, poiché è stato lì fin dall’inizio e poiché l’API basata su c# non è bella come i framework più recenti come Serilog.

Registrazione dei messaggi

Quando si tratta di registrare i messaggi dalla tua applicazione, log4net e NLog funzionano in modo abbastanza simile.

log4net

I messaggi di log vengono scritti utilizzando l’API log4net:

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

Ulteriori informazioni di registro possono essere allegate a un messaggio di registro utilizzando una serie di diverse opzioni contestuali:

Mentre è possibile incorporare informazioni direttamente nei messaggi di log con log4net, la registrazione semantica non è supportata.

NLog

NLog fornisce un’API simile a log4net per la registrazione dei messaggi al set di destinazioni configurato:

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

Le proprietà supplementari possono essere allegate pure:

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

La versione recente di NLog supporta la registrazione semantica. Per aggiungere semantica ai messaggi di registro, utilizzare la sintassi parentesi graffa:

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

Conclusione

Scegliere un vincitore non è l’obiettivo di questo post. Entrambi i framework di registrazione hanno i propri vantaggi e svantaggi.

log4net

Vantaggi