Présentation
- Définition
Log4net = Log for .NET, c’est le portage officiel d’Apache Log4j (bibliothèque de logs Java emblématique) pour la plate‑forme .NET, une bibliothèque open source mature dédiée à l’enregistrement des journaux d’événements. - Fonctionnalités principales
Une fois intégré au projet, pas besoin d’écrire manuellement la logique de lecture‑écriture de fichiers. Vous produisez rapidement des journaux applicatifs pour conserver les informations d’exécution et les traces d’exception, facilitant le débogage et l’analyse des problèmes en production. - Liens entre les composants
- Log4j : bibliothèque historique de journalisation pour l’écosystème Java
- Log4net : portage de Log4j adapté pour C#/.NET
Installation
Pour les projets .NET modernes, privilégiez l’installation via NuGet :
dotnet add package log4net
Dans Visual Studio, vous pouvez aussi rechercher directement log4net dans « Gérer les paquets NuGet » pour l’installer en un clic.
À ses débuts, log4net s’installait principalement par téléchargement manuel du fichier dll. Aujourd’hui NuGet est la solution standard.
Configuration de l’environnement Log4Net
log4net fonctionne sur tous types de projets : applications console, bureau ou applications web.
Procédure d’utilisation
Étape 1 : modifier Web.config et ajouter la configuration log4net
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- Enregistrer la section de configuration log4net -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- Enregistreur de fichiers avec rotation par date -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- Chemin de stockage des logs : préférez un chemin relatif, évitez les chemins absolus fixes sur clé USB -->
<param name="File" value="logs\\"/>
<!-- Mode ajout : true = compléter le fichier, false = vider le fichier à chaque lancement -->
<param name="AppendToFile" value="true"/>
<!-- Nombre maximal de fichiers de logs conservés -->
<param name="MaxSizeRollBackups" value="10"/>
<!-- Nom de fichier fixe : false = générer des fichiers différents selon la date -->
<param name="StaticLogFileName" value="false"/>
<!-- Modèle de nommage des fichiers -->
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<!-- Stratégie de rotation : Date = séparer les logs par date -->
<param name="RollingStyle" value="Date"/>
<!-- Modèle de format de sortie des logs -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<!-- ❗L’ancien modèle comportait un %loggername superflu qui générait du texte parasite dans les logs, il a été supprimé -->
</layout>
</appender>
<!-- Configuration racine des logs, valable pour toute l’application -->
<root>
<!-- Niveau de log all : afficher tous les niveaux ; valeurs possibles : DEBUG/INFO/WARN/ERROR/FATAL/OFF -->
<level value="all"/>
<!-- Associer l’enregistreur défini ci‑dessus -->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>Langage du code : HTML, XML (xml)
- N’utilisez pas de chemins absolus codés en dur comme
G:\xxx, ils cesseront de fonctionner sur serveur. Utilisez plutôt le chemin relatiflogs\\; - En environnement de production, réglez le paramètre
levelsurINFOouERRORpour éviter que de nombreux logs DEBUG n’occupent de l’espace disque.
Étape 2 : initialiser Log4Net au niveau global
Ajoutez le code d’initialisation dans la méthode Application_Start du fichier Global.asax, la configuration se charge au démarrage de l’application
protected void Application_Start(object sender, EventArgs e)
{
// Initialiser log4net et lire la configuration contenue dans Web.config
log4net.Config.XmlConfigurator.Configure();
}Langage du code : JavaScript (javascript)
Attention : sans cette ligne, aucun fichier de log ne sera généré même si vous appelez les méthodes de journalisation. C’est une erreur très fréquente.
Étape 3 : récupérer le Logger et écrire des logs dans vos pages
Écrivez le code d’appel dans Default.aspx.cs. Ce code peut être placé n’importe où, cet exemple illustre une page simple.
using log4net;
public partial class _Default : System.Web.UI.Page
{
// Récupérer l’instance de journalisation, la chaîne est le nom du logger personnalisable
public static readonly ILog log = LogManager.GetLogger("logger-name");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("Journal d’information");
log.Error("Journal d’erreur");
// Autres niveaux disponibles
// log.Debug("Journal de débogage");
// log.Warn("Journal d’avertissement");
// log.Fatal("Journal d’erreur fatale");
}
}
Bonne pratique : déclarez ILog en tant que static readonly pour éviter de créer constamment de nouvelles instances et améliorer les performances.
Résultat à l’exécution
- Au lancement de l’application, un dossier
logsest automatiquement créé à la racine du site ; - Des fichiers de journaux sont générés automatiquement avec le format de nommage
2026-08-04.log; - Exemple de contenu dans le fichier :
2026-08-04 15:30:22,123 [6] INFO logger-name - Journal d’information
2026-08-04 15:30:22,129 [6] ERROR logger-name - Journal d’erreurLangage du code : CSS (css)
Compléments
- Au‑delà de l’écriture dans des fichiers, Log4Net peut aussi écrire vers la console, une base de données ou envoyer des courriels ;
Pour de nouveaux projets, comparez NLog / Serilog : ils offrent un meilleur support pour .NET Core/.NET 5+. Log4net est surtout utilisé pour maintenir d’anciens projets WebForm ou WinForms.
Présentation et installation