16/01/2021 L'utilisation de Log4J pour tracer les logs Talend n'est pas toujours simple à mettre en place. Voici le fichier de paramétrage Log4J2 que j'ai créé offrant les atouts suivants :
- Affichage des lignes de log dans la console (avec seulement l'heure et le niveau de log)
- Ecriture des lignes de log dans un fichier, avec la date/heure et le niveau de log
- Création d'un fichier de log par lancement, afin de séparer les exécutions
- Rotation des fichiers de logs : seulement les 200 derniers fichiers sont conservés
- Le dernier fichier de log créé se nomme "rapport.log"
- Les fichiers sont écrits dans un répertoire :
- soit dans le chemin relatif .. / .. / log par rapport au chemin d'exécution
- soit dans le répertoire précisé par la variable d'environnement nommée "LOG4J"
Pour l'utiliser :
- Allez dans le menu Fichier puis Modifier les propriétés du projet
![]()
- Cliquez sur Log4J dans la fenêtre de gauche
- Cochez Activer Log4J dans les composants, vérifiez que log4j2 est bien sélectionné
![]()
- Puis collez le code ci-dessous :
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="XMLConfigTest" packages="org.apache.logging.log4j.test">
<!-- Utilise la variable d'environnement utilisateur LOG4J ou le chemin relatif si n'existe pas -->
<Properties>
<Property name="log-path">${env:LOG4J:-./../../log}/</Property>
</Properties>
<ThresholdFilter level="info"/>
<Appenders>
<!-- Paramètre d'affichage de la console-->
<Console name="sortie_console">
<PatternLayout pattern="%d{HH:mm:ss};%-5p;%m%n"/>
</Console>
<!-- fileName : nom du fichier actuel -->
<!-- filePattern : nom des fichiers anciens -->
<RollingFile
name="liste_fichiers"
fileName="${log-path}/rapport.log"
filePattern="${log-path}/rapport_%d{yyyy-MM-dd_HH-mm-ss}.log"
ignoreExceptions="false"
>
<!-- Syntaxe d'une ligne dans le fichier -->
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss};%-5p;%m%n</Pattern>
</PatternLayout>
<!-- Crée un fichier log4j à chaque démarrage du programme -->
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
<!-- Ne conserve que les 200 derniers fichiers logs -->
<DefaultRolloverStrategy>
<Delete basePath="${log-path}" maxDepth="1">
<IfFileName glob="rapport_*.log" />
<IfAccumulatedFileCount exceeds="200" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="liste_fichiers"/>
<AppenderRef ref="sortie_console"/>
</Root>
</Loggers>
</Configuration>
Ensuite, dans le projet, vous pouvez utiliser log.trace, log.debug, log.info, log.warn, log.error dans un tJava afin d'envoyer des instructions à log4J
Utiliser Log4J depuis une routine
Pour utiliser Log4J dans une routine et lui appliquer les mêmes paramètres que précédemment, il faut :
Variantes dans le format des log
Le format des logs dans le fichier est important, voici quelques-unes des variantes possibles :
Motif | Exemple |
%d{yyyy-MM-dd HH:mm:ss};%-5p;%m%n | 2022-01-08 08:11:07;ERROR;Voici une erreur |
%d{yyyy-MM-dd HH:mm:ss.SSSSS} [%-5p] %m%n | 2022-01-08 08:11:07.00988 [ERROR] Voici une erreur |
[%-5p] %d{yyyy-MM-dd HH:mm:ss};%m%n | [ERROR] 2022-01-08 08:11:07;Voici une erreur |
Dernière modification le 16/01/2021 - Quillevere.net