Utiliser log4j pour logger dans Apache Tomcat

Pour nos applications développées en JEE nous avions un sérieux problème de log tomcat qui se remplissaient pour atteindre des tailles critiques mettant en péril le fonctionnement de nos applications. Après des essais, un peu de lecture l’équipe R&D d’Easyflyer a décidée d’abandonner la configuration du moteur JULI installé par défaut dans Tomcat (version 6.0 pour nous), et de remplacer le moteur par log4j.

Voici la procédure à suivre pour installer Log4j dans Tomcat :

 

1. Télécharger les librairies nécessaires

Les librairies nécessaires sont :

  • log4j version >= 1.2.x
  • les jar tomcat-juli-adapters.jar et tomcat-juli.jar.

Les jars tomcat-julixx.jar sont téléchargeables à partir du site Apache Tomcat dans la rubrique download correspondant à votre numéro de version.  Il faut se rendre ensuite dans la rubrique Quick Navigation -> Browse, et se déplacer dans bin?extra.

2. Déplacer les librairies

  • copier tomcat-juli.jar dans le répertoire bin de Tomcat
  • copier tomcat-juli-adapters.jar dans le répertoire lib de Tomcat

3. Création du fichier de configuration

Le fichier de configuration log4j.properties doit être placé dans le répertoire lib de Tomcat. Voici un exemple de configuration :

log4j.rootLogger=INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}?logs?catalina.out
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern =%d [%t] %-5p %c - %m%n

log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}?logs?localhost.out
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}?logs?manager.out
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File=${catalina.base}?logs?host-manager.out
log4j.appender.HOST-MANAGER.Append=true
log4j.appender.HOST-MANAGER.Encoding=UTF-8
log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[?manager]=\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[?host-manager]=\
INFO, HOST-MANAGER

Un petit redémarrage de Tomcat et le tour est joué.

Utiliser log4j pour logger dans Apache Tomcat

Tagged in:

3 Comments

  1. Fouad Mz

    15 mars 2013 - 11 h 41 min
    Reply

    Bonjour,

    J’ai un souci avec le DailyRollingFileAppender.

    Il faut que je redémarre mon serveur Tomcat pour que les fichiers logs soient créés ! Les logs ne sont pas créés à minuit comme je le souhaite, quand j’arrive le matin, rien n’est créé !

    Je suis sur un environnement Linux + apache-tomcat-6.0.35 + log4j-1.2.15.

    • Nicolas BESNARD

      17 mars 2013 - 10 h 03 min
      Reply

      Est-ce que tu as modifié la config tomcat pour qu’il utilise log4j au lieu de Juli ?
      Peux-tu envoyer ta section concernant DailyRollingFileAppender de ton fichier log4j.properties ?

  2. Get More Information

    18 mai 2013 - 15 h 00 min
    Reply

    Helpful information. Lucky me I found your site by accident, and I am shocked why this twist of fate did not took place earlier!
    I bookmarked it.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.