Les frameworks de log sont des librairies permettant aux développeurs d'ajouter à leurs application une sortie de log flexible.

Le développeur peut créer un message de log par une simple ligne de code :

logger.Error("Une erreur s'est produite");

La configuration du framework de log détermine où ce message est écrit (par exemple dans un fichier, sur le réseau, dans une base de données ou dans un courriel). Les frameworks de log offrent des moyens puissants et flexibles de contrôler si les messages doivent être envoyés vers des destinations multiples, ou si certains messages doivent être envoyés vers des destinations spécifiques ou abandonnés, en fonction de la sévérité du message ou du composant émetteur. De plus, les frameworks de log offrent de nombreuses possibilités de formatage de la sortie, en utilisant des modèles prédéfinis ou en créant des modèles personnalisés.

De par la variété de leurs canaux de sortie, la puissance de leur configuration et leur maturité, les frameworks de log sont préférables aux solutions de log improvisées. Tous les frameworks de log mentionnés ici sont des projets open source.

La configuration d'un framework de log peut être effectuée à partir d'un fichier XML, ou dans le code de l'application. L'avantage de l'utilisation d'un fichier XML est qu'elle permet la modification des réglages sans recompilation du code. Tous les frameworks de log permettent la modification du fichier de configuration et la prise en compte des changements pendant le fonctionnement de l'application.


Log4j, log4net, log4cxx, log4php

L'histoire des frameworks de log managés commence par log4j. Cette bibliothèque Java est le standard de facto dans le monde Java depuis 2004. Son succès a inspiré les années suivantes des implémentations pour .NET (log4net), C++ (log4cxx) et PHP (log4php). Bien que respectant l'approche de log4j, ce sont des implémentations propres, dans et pour leurs plateformes respectives. Elles intègrent de ce fait les possibilités et conventions de ces plateformes.

Log4j et log4net ont été utilisés dans d'innombrables projets informatiques et ont fait la preuve de leur fiabilité et de leur maturité. Les émetteurs et modèles fournis satisfont la plupart des besoins. Pour des utilisations particulières, l'implémentation d'émetteurs spécifiques ne pose pas de difficulté particulière.

Log4net est actuellement un projet officiel de la  Fondation Apache. La dernière version (1.2.11) a été publiée en octobre 2011.


NLog

NLog est un framework de log alternatif, lancé et maintenu par Jarek Kowalski. Fortement inspiré par log4j et log4net, NLog introduit quelques nouvelles approches et idées, et est toujours activement développé et amélioré.

La transition de log4net à NLog nécessite quelques précautions. Les modifications de code sont aisées. Les fichiers de configuration de log4net et de NLog ont des structures similaires, de sorte que la conversion est directe. Mais si des fichiers sont utilisés comme sorties de log, il peut arriver que l'application tourne nettement plus lentement après la transition vers NLog. Ceci n'est pas dû à une différence fondamentale de vitesse entre NLog et log4net, mais au comportement par défaut des sorties fichiers de NLog : elles ouvrent et referment le fichier de sortie à chaque message de log, tandis que celles de log4net laissent le fichier ouvert en permanence. Si ce comportement par défaut est modifié en passant l'attribut "keepFileOpen" à "true" dans les réglages des sorties fichiers de NLog, elle deviennent aussi rapides que celles de log4net.


Quel framework de log dois-je choisir ?

Le développeur dispose avec log4net et NLog de deux bons systèmes de log.

Sa maturité et son adoption par un large public plaident en faveur de log4net. Si vous utilisez dans votre application d'autres frameworks utilisant eux-mêmes log4net (par exemple l'ORM NHibernate), il est recommandé de l'utiliser. Un développeur ayant déjà une bonne connaissance de log4net, si ça ne pose pas de problème immédiat, devrait continuer à l'utiliser.

L'avantage de NLog réside dans son développement actif et dans ses fonctionnalités additionnelles.

Les deux frameworks sont supportés par Log4View.