Log4net HowTo

De Wikifago.

(Différences entre les versions)
(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);
Outils personnels