Log4net HowTo
De Wikifago.
(→Exemple de syntaxe du fichier de configuration du logger) |
|||
| Ligne 25 : | Ligne 25 : | ||
</filter> | </filter> | ||
</appender> | </appender> | ||
| + | </log4net> | ||
| + | </pre> | ||
| - | </log4net> | + | == Exemple d'utilisation à l'interieur du fichier web.config == |
| + | <pre> | ||
| + | <?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> | ||
</pre> | </pre> | ||
| + | |||
Le fichier peut utiliser des répertoires spécifiques à windows tel que ceux que l'on retrouve dans l'énuméré Environment.SpecialFolder. | Le fichier peut utiliser des répertoires spécifiques à windows tel que ceux que l'on retrouve dans l'énuméré Environment.SpecialFolder. | ||
| Ligne 40 : | Ligne 77 : | ||
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 == | == Configuration de log4net au niveau de l'assembly == | ||
Version actuelle en date du 30 septembre 2009 à 15:59
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);
