NLog vs log4net

NLog et log4net sont deux choix très populaires lors de la sélection d’un framework de journalisation pour les applications .NET. Dans cet article, vous apprendrez tout sur les frameworks et les différences. Pour ceux d’entre vous qui ne connaissent pas l’un ou les deux cadres, commençons par quelques mots sur chaque cadre.

log4net

Probablement le plus ancien framework de journalisation du bloc, log4net existe à peu près depuis l’introduction de .NET. log4net était à l’origine un port interne d’Apache log4j développé par Neoworks Limited en 2001. Le projet est rapidement passé à Sourceforge (le GitHub de 2001) et a été publié sous la licence Apache. Depuis lors, log4net est l’un des choix les plus populaires dans le monde .NET pour ajouter de la journalisation aux applications.

log4net fonctionne avec le concept d’appenders, où les messages de journal peuvent être acheminés vers différents magasins de données. Beaucoup d’appenders ont été implémentés au cours des années, comme la journalisation dans le système de fichiers, SQL Server, les points de terminaison HTTP et même les bases de données NoSQL, mais étant des messages texte non structurés, log4net et NoSQL ne vont pas exactement de pair.

NLog

Alors que log4net est rapidement devenu le choix par défaut, des alternatives ont commencé à apparaître. Le premier véritable concurrent de la domination de log4net était probablement NLog. Développé à l’origine par Jarek Kowalski et avec des demandes de tirage de près de 100 personnes, NLog est une excellente alternative. Alors que log4net était à peu près immobile à partir de 2006, NLog a simplement continué. Alors que Jarek semblait tirer le bouchon en démarrant chez Google, la communauté semblait s’intensifier et les nouvelles versions continuent de circuler.

Comme log4net, NLog contient plusieurs cibles de journal et est capable de consigner les messages dans divers magasins de données.

Configuration

Tous les frameworks de journalisation ont besoin d’une sorte de configuration, afin que le framework sache quoi se connecter et où.

log4net

log4net est configuré via votre application.fichier de configuration ou log4net dédié.config :

NLog

NLog peut être configuré à la fois via XML et C#. La plupart des gens utilisent XML, car cela existe depuis le début et puisque l’API basée sur C # n’est pas aussi agréable que les nouveaux frameworks comme Serilog.

Messages de journalisation

En ce qui concerne la journalisation des messages de votre application, log4net et NLog fonctionnent assez similaires.

log4net

Les messages de journal sont écrits à l’aide de l’API log4net:

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

Des informations de journal supplémentaires peuvent être jointes à un message de journal en utilisant différentes options contextuelles:

Bien que vous puissiez intégrer des informations directement dans les messages de journal avec log4net, la journalisation sémantique n’est pas prise en charge.

NLog

NLog fournit une API similaire à log4net pour la journalisation des messages vers l’ensemble de cibles configuré:

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

Des propriétés supplémentaires peuvent également être attachées:

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

La version récente de NLog prend en charge la journalisation sémantique. Pour ajouter de la sémantique à vos messages de journal, utilisez la syntaxe des accolades:

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

Conclusion

Choisir un gagnant n’est pas l’objectif de cet article. Les deux cadres de journalisation ont leurs propres avantages et inconvénients.

log4net

Avantages