logo       

Re: "Best practice" pour le log: msg#00028

java.french.general

Subject: Re: "Best practice" pour le log

Le dimanche 10 Juillet 2005 14:04, Jean-Marc Desprez a écrit :
> Bonjour à tous,
> Je me pose quelques questions sur la meilleure façon d'utiliser un
> système de log.
>

Je te réponds par rapport à log4j, bien que j'ai l'impression que tu utilises
Common Logging.

> Premièrement, faut-il déclarer le Logger en static ?

Avec log4j cela semble complètement inutile. Le paquetage le fait déjà.

>
> Deuxièmement, une mauvaise utilisation peut-elle engendrer une fuite de
> mémoire ?

Avec log4j, impossible, puisque le logger n'enregistre que son nom.


>
> Une autre solution pourrait utiliser une fonction avec un nombre de
> paramètres variables. Ce qui donnerai simplement :
> logger.debug("texte %1 suite %2 fin", valeur1, valeur2);
> Je ne sais pas si ce genre de solution existe déjà.
>

Moi je me suis construit un petit paquetage qui me permet d'écrire :

logger.say("valeur 1", valeur1).say("valeur 2", valeur2).debug();

>
> Merci pour vos réponses/conseils

De ma pratique sur les loggers, j'observe que le niveau "debug" est en passe
de devenir obsolète : je l'utilise de moins en moins... je ne sais s'il faut
y voir une amélioration générale de ma façon de programmer, ou une marque de
fénéantise. En tous les cas, cela résoud de fait le problème du
"isDebugEnabled()".

Par contre ce qui est vraiment utile c'est la trace des exceptions. Pour elles
je mets un double message : pour l'utilisateur, et pour le fichier de logs.
Celui du fichier de log, c'est en général le stack trace, avec la série des
exceptions cause, et la valeur des paramètres.

Ces traces me permettent de comprendre ce qui se passe en cas de pépin dans
quasi tous les cas ; j'utilise surtout les niveaux "warning" et "error" ;
jusqu'à présent les cas qui sont passés au travers relevaient du bug JVM.

Grâce au système des "initCause" des exceptions, les warnings se retrouvent
juste au niveau le plus élevé du stack trace, ce qui fait qu'il y a de moins
en moins d'appels aux logs. De plus, ma tendance actuelle est d'améliorer mon
petit paquetage perso pour l'adapter à ce qui m'est utile.

La situation serait toute différente, je pense, dans un contexte de sécurité
où il faut tracer le fonctionnement. Mais à mon avis, dans ce genre de cas,
la meilleure approche serait d'utiliser les outils de manipulation du byte
code style ASM (http://asm.objectweb.org/) plutôt que de mettre des
"isDebugEnabled" partout. Mais là je parle de choses que j'ai jamais faites.

Cordialement.


--
SARL diaam informatique - 04 77 25 43 28
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.com



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise