Log4net HowTo
De Wikifago.
(Page créée avec « == 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. <pre> <?… ») |
|||
Ligne 40 : | Ligne 40 : | ||
D'autre variables sont possibles : | D'autre variables sont possibles : | ||
Mes documents -> ${USERPROFILE}\Mes documents; Bureau ${USERPROFILE}\Bureau; Répertoire windows ->${WINDIR} | 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. | ||
+ | <pre> | ||
+ | [assembly: log4net.Config.XmlConfigurator(Watch = true, ConfigFile = "appli.log4net")] | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | == Utilisation dans le code C# pour la classe Toto == | ||
+ | Importer log4net dans la classe | ||
+ | <pre> | ||
+ | using log4net; | ||
+ | </pre> | ||
+ | |||
+ | Déclarer une variable statique dans la classe | ||
+ | <pre> | ||
+ | private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Toto)); | ||
+ | </pre> | ||
+ | |||
+ | Utiliser le logger | ||
+ | <pre> | ||
+ | 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); | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | Logger au niveau debug avec 2 paramètres ( ou plus si on veut... ) | ||
+ | <pre> | ||
+ | log.DebugFormat("Aujourd'hui : {0} heure:{1}",DateTime.Now.ToShortDateString(),DateTime.Now.Hour); | ||
+ | </pre> |
Version du 30 septembre 2009 à 15:54
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>
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);