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);