Log4net HowTo
De Wikifago.
Sommaire |
Exemple de syntaxe du fichier de configuration du logger
Logger de 2 fichiers tournants de 1Mo max chacun, dans le répertoire "logs" de l'exe qui l'utilise.
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!-- Niveaux de trace possibles dans l'ordre : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\\logs\\appli.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1Mb" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %c:%line [%x] - %m%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
Exemple d'utilisation à l'interieur du fichier web.config
<?xml version="1.0"?>
<configuration>
<!-- association des sections personnalise avec leurs classes de manipulation-->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" />
</configSections>
<appSettings>
...
</appSettings>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log\\webservice.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="4" />
<maximumFileSize value="1Mb" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %c:%line [%x] - %m%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
<system.web>
...
</system.web>
</configuration>
Le fichier peut utiliser des répertoires spécifiques à windows tel que ceux que l'on retrouve dans l'énuméré Environment.SpecialFolder.
Si l'on veut écrire dans le répertoire servant de référentiel commun pour les données spécifiques à l'application qui sont utilisées par l'utilisateur itinérant actuel (Environment.SpecialFolder.ApplicationData); le paramètre File doit s'écrire ainsi :
<param name="File" value="${APPDATA}\\SONG IHM\\logs\\appli.log" />
D'autre variables sont possibles : Mes documents -> ${USERPROFILE}\Mes documents; Bureau ${USERPROFILE}\Bureau; Répertoire windows ->${WINDIR}
Configuration de log4net au niveau de l'assembly
Indiquer a log4net que la config se trouve dans le fichier appli.log4net, et que la configuration doit être prise à chaud.
[assembly: log4net.Config.XmlConfigurator(Watch = true, ConfigFile = "appli.log4net")]
Utilisation dans le code C# pour la classe Toto
Importer log4net dans la classe
using log4net;
Déclarer une variable statique dans la classe
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Toto));
Utiliser le logger
try
{
_hostname = System.Net.Dns.GetHostName();
_ipAddress = Dns.GetHostEntry(_hostname).AddressList[0].ToString();
}
catch (Exception ex)
{
log.Error("Erreur lors de l'initialisation du context de l'IHM", ex);
MessageBox.Show("Erreur lors de l'initialisation blabla", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
Logger au niveau debug avec 2 paramètres ( ou plus si on veut... )
log.DebugFormat("Aujourd'hui : {0} heure:{1}",DateTime.Now.ToShortDateString(),DateTime.Now.Hour);
