Accueil
 
 Accueil arrow Solutions arrow Safran arrow Log4J
Log4J
 
Favoris Aucun

Log4J est une API de journalisation, qui permet à Safran de créer des traces tant du coté serveur que du coté client. La configuration de cette API passe par un fichier de configuration externe en XML relativement facile à appréhender. L'instrumentation du code est, elle, encore plus simple, comme nous allons le voir. Safran utilise JBoss comme serveur d'application : la description de l'intégration de Log4J coté serveur s'appuie sur l'existant de la configuration de celui-ci.

Intégration de Log4J dans les applications "clientes" :

Description du fichier "log4j.xml" :
Les traces sont écrites de deux manières :

- dans une console (pour le débogage immédiat dans un atelier de développement)

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <param name="Threshold" value="DEBUG"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%c{1}] %m%n"/>
    </layout>
</appender>

- dans un fichier de journalisation (pour le débogage en condition d'exploitation)

<appender name="FILE" class="org.apache.log4j.FileAppender">
    <param name="file" value="/SafranLogger.log"/>

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
    </layout>

    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="levelMin" value="DEBUG"/>
    </filter>
</appender>

On doit ici préciser le nom du fichier de log (dans le cas présent le fichier sera généré à l'endroit ou s'exécute l'application). Le log en mode "fichier" précise également la date et l'heure de la trace.

Le réglage du seuil (treshold) global des applications clientes se définit dans le même fichier :

<root>
  <priority value ="DEBUG" />
  
  <appender-ref ref="CONSOLE" />
  <appender-ref ref="FILE" />
 </root>

Le fichier log4J.jar et log4J.xml doivent être placés dans le classpath (le fichier XML se trouve dans le repertoire "/conf" de Lanceur.jar).

Intégration de Log4J dans le serveur d'application :

Description du fichier "log4j.xml" :
Le fichier de trace du serveur pouvant être rapidement énorme (surtout en mode DEBUG) nous avons opté pour la création d'un fichier de trace différent pour chaque jour. Cette approche permet en plus de supprimer les traces obsolètes rapidement. JBoss intègre la journalisation par Log4J dans sa configuration de base. Nous ne rejoutons donc que le code suivant pour généré un fichier de type "DailyRollingFileAppender".

<appender name="SAFRAN_FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<param name="File" value="${jboss.server.log.dir}/safran.log"/>
<param name="Append" value="false"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>

Le code suivant permet de ne mettre dans le fichier de trace journalier que les traces générées à partir de classes faisant partie du package "Safran" :

<logger name="fr.xter.safran" additivity="true">
<level value="DEBUG" />
<appender-ref ref="SAFRAN_FILE"/>
</logger>

Ceci offre egalement une autre avantage : les traces générées par JBoss inclues également les traces de Safran. Ainsi les logs générés par Safran se trouve égalament dans le contexte des traces de JBoss (par défaut dans JBoss il y a une trace journalière et une trace Console : une erreur fatale Safran apparaitra donc également dans la console JBoss).

Utilisation de Log4J dans le code :

Le code s'écrit de la même manière du coté client et du coté serveur. pour recupérer une reférence sur l'objet de log il faut procéder comme suit.

- dans une classe instancié :

Logger log = Logger.getLogger(this.getClass());

- dans une classe statique :

Logger log = Logger.getLogger("NomDeLaClasseStatique");

Ajout d'une ligne de trace selon le niveau de priorité :

log.info("Lancement de l'application");
log.debug("création d'une instance de l'objet utilisateur");
log.fatal("référence d'objet à null, cas d'utilisation normalement impossible");

En condition d'exploitation le seuil minimal de trace est le niveau INFO. Toutes les traces de niveau DEBUG seront donc ignorées.

Imprimer

Commentaires utilisateurs (0)

Aucun commentaire posté

Ajouter votre commentaire



mXcomment 1.0.6 © 2007-2010 - visualclinic.fr
License Creative Commons - Some rights reserved

 

Identification

SARL Xter Informatique - 69 avenue Saint Exupery 06130 Grasse - +33(0)4 93 36 05 67
Amino.fr : le site des amis des animaux |  Conseil mariage