The fastest way to log4j …

9 mai 2008 at 15 h 59 min Laisser un commentaire

.. ou 30s pour une webapp journalisée par Log4j

Depuis la version 5.5, le logger interne de tomcat est remplacé par log4j.

Quel intérêt à utiliser un systeme de logging externe ?

Si on utilise System.out.println(); , les sorties sont redirigées dans le cas d’une webapp vers le fichier catalina.out. Si on peut se contenter de cette méthode pour tester une webapp sur son pc, il est est autrement plus compliqué si l’on veut s’y retrouver sur un Tomcat contenant plusieurs webapps! De plus, la concurrence sur la sortie standard n’est pas gérée par System.out, et il n’est donc pas rare d’avoir deux applications mélangeant allègrement leurs logs en éditant simultanément catalina.out.

Log4j est populaire car il permet tres facilement de:
Séparer les fichiers de logs ( y compris pour une seule et meme application)
Hierarchiser les logs
Définir rapidement le niveau d’alerte souhaité (une infos de debug n’a pas la meme criticité qu’une alerte d’erreurs)

Voici un moyen rapide pour l’utiliser:

1 télécharger log4j ici :

http://logging.apache.org/log4j/1.2/download.html


2 recuperer le fichier log4j-*VERSION*.jar et le placer dans les librairies
– de la web app
– ou du serveur ( non testé)
(Dans le code faire attention lors en utilisant import à ne pas utiliser les librairies de java.util)

La programmation se fait en 3 lignes:

Code:

// initialisation du logger

Logger log = Logger.getLogger(« toto »); //toto est l’identifiant du logger

// définition de la criticité

log.setLevel(Level.INFO);

// ce qui remplace un appel a System.out.print();

log.info(« temps de requete pour rechercher les mesages: »+mytime );

Explication du niveau de log:
Une fois le niveau de log fixé, seul les traces d’un niveau de priorité supérieures au niveau fixé seront tracées.
Par exemple avec un setLevel= level.INFO, les log.debug(« message ») seront inactifs. (car level.DEBUG<level.INFO)

Ou placer ce code ?
L’initialisation du logger peut se faire dans une classe dédié, en la plaçant de manière statique dans le constructeur:Les appels se feront en tapant LogUtil.log.xxx();

public class LogUtil {
public static Logger log = Logger.getLogger(« main »);
}

Utiliser un fichier de properties:
Au lieu de définir les paramètres par programmation, il est recommandé d’utiliser un fichier de configuration. Voici a quoi ressemble mon Log4j.properties:

#définition du niveau et des Appender du rootLogger
log4j.rootLogger=DEBUG, monAppender

#configuration de « monAppender »
#nous allons envoyer les messages dans la console de Tomcat
#log4j.appender.monAppender=org.apache.log4j.ConsoleAppender

log4j.appender.monAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.monAppender.File=/home/mulder/logdev.log
log4j.appender.monAppender.DatePattern=’.’yyyy-MM-dd

#définition du Layout pour « monAppender »
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout

#définition du pattern d’affichage pour « monAppender »
#voici un exemple de sortie que l’on va obtenir : 2005-06-18 14:53:37 DEBUG [Main] Hello World
log4j.appender.monAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{1}] %m%n

Le fichier est automatiquement chargé s’il est placé dans le dossier WEB-ING/classes/ de la WEBAPP, ou COMMON/classes/ du serveur tomcat.

Entry filed under: java, tutorial. Tags: .

messagerie instantanée et privacité… Dealing with Javascript variable scope and for-loop or external function.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Articles récents


%d blogueurs aiment cette page :