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