Une cafetière et un mug  ;)

Merci à Mathieu LECARME pour ces ô combien magnifiques icônes, mettant en oeuvre des techniques graphiques ancestrales issues du temps béni des défunts atari st et amiga.

L'icône de la cafetière correspond au composant tInitLog4J, ayant pour rôle d’initialiser le framework de log.

Le mug correspond au composant tLog4J ayant pour rôle la génération d’un log à un endroit du job, en utilisant un des loggers définis dans le fichier de configuration de log4J ( chargé par tInitLog4J au  préalable) , plus un niveau de log (au choix entre DEBUG, WARN,INFO,ERROR,FATAL) et bien sur d’un message.

  1. -Restrictions / précisions sur l'utilisation de ces composants :

  2. - Une même configuration de log4j pour tous les jobs s'exécutant dans une même JVM (cela n'empêche pas d'avoir des loggers / sorties de logs différentes dans chaque jobs)

  3. -Gestion du multi-threading (pas de problème de reset de la configuration si des sous jobs sont lancés en parallèles et contiennent eux aussi le composant d'initialisation du framework log4j) --> permet de lancer les jobs un par un ou en parallèle avec un "master job".

  4. -L'initialisation ne sera toujours faite qu'une seule fois (gain en performance et obtenu grâce a la restriction ci-dessus)

- Support du mode de configuration XML de log4j uniquement.(le mode de configuration XML est le seul mode qui permet d'utiliser le mécanisme de logging asynchrone de log4j, c'est une best practice que d'utiliser ce mécanisme).

- Les composants appartiennent à une sous famille "log4j" de la famille "Logs & Errors".

Apres avoir téléchargé ces composants depuis l’écosystème Talend, si c’est la première fois que vous utilisez des composants customisés, vous devrez aller dans le menu des préférences Talend (window > preferences...> talend )

choisir components et preciser un répertoire a votre convenance (en dehors du répertoire de Talend Open Studio de préférence)

Un exemple d’utilisation : un job qui classes des nombres pairs et impairs et utilise les 2 composants ci-dessus : 

Donc un flux de nombres aléatoires en entrée et deux flux en sorties : nombres pairs et impairs.

Le premier composant est donc notre magnifique cafetière.

Si l’on regarde ses propriétés, elle prend en paramètre l’emplacement d’un fichier XML (spécifié en dur dans cet exemple, mais bien sur à mettre en tant que paramètre contextuel).

Le contenu de ce fichier est le suivant : 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">

    <appender-ref ref="SystemOut" />

</appender>

<appender name="SystemOut" class="org.apache.log4j.ConsoleAppender">

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c - %m%n" />

</layout>

</appender>

<appender name="debugfile"

class="org.apache.log4j.RollingFileAppender">

<param name="maxFileSize" value="100KB" />

<param name="maxBackupIndex" value="5" />

<param name="File" value="c:/debug.log" />

<param name="threshold" value="debug" />

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern"

value="%d{ABSOLUTE} %c - %m%n" />

</layout>

</appender>

<appender name="errorfile"

class="org.apache.log4j.RollingFileAppender">

<param name="maxFileSize" value="100KB" />

<param name="maxBackupIndex" value="5" />

<param name="File" value="c:/error.log" />

<param name="threshold" value="error" />

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern"

value="%d{ABSOLUTE} %c - %m%n" />

</layout>

</appender>

  

<logger name="errorLogger">

<level value="error" />

<appender-ref ref="errorfile" />  

</logger>

<logger name="debugLogger">

<level value="debug" />

<appender-ref ref="debugfile" />  

<appender-ref ref="SystemOut" />

</logger>

<root>  

  </root>

</log4j:configuration>


Ce fichier définit donc 2 loggers : errorLogger et debugLogger, debugLogger a 2 sorties : la sortie standard et un fichier, et errorLogger n’a qu’une sortie vers un fichier.

Si ce fichier reste un mystère, je vous renvoie vers la documentation de log4J et plus précisément du fichier XML de configuration ici : http://wiki.apache.org/logging-log4j/Log4jXmlFormat

Chacun des mugs en sortie du tMap va utiliser un de ces loggers.

Arbitrairement le logger (un composant tLog4J)  des nombres pairs va utiliser le logger “debugLogger” et celui des nombres impairs le “errorLogger”

Screen du logger des nombres impairs :

Screen du logger des nombres pair : 

Voila, that’s all ;)

Ces composants sont un peu brut de fonderie niveau choix proposés, et contrôles d’erreur sur la saisie d’un logger erroné  par exemple.

Mais je les ai voulu les plus simples et performants possibles, le framework log4J étant auto suffisant en terme de flexibilité offertes par la suite.

Toutes remarque / suggestion est bien  entendue la bienvenue ;)