|
"Best practice" pour le log: msg#00026java.french.general
Bonjour à tous, Je me pose quelques questions sur la meilleure façon d'utiliser un système de log. Premièrement, faut-il déclarer le Logger en static ? J'ai regardé sur le site de "commons logging" le chapitre "Developing With JCL" (http://tinyurl.com/bax8f) et le Logger de l'exemple est static : ---http://tinyurl.com/bax8f public class CLASS{ private static Log log = LogFactory.getLog(CLASS.class); ... --- Pour l'instant je fais : private final static Logger log; ...// d'autres membres static { // initialisation des membres statiques log = Logger.getLogger(EntityAbstraite.class); ... } Qu'en pensez-vous ? Est-ce que ça peut poser un problème avec un serveur d'applications (et donc plusieurs thread) ? Deuxièmement, une mauvaise utilisation peut-elle engendrer une fuite de mémoire ? Toujours sur le site de "commons logging" le chapitre "Classloader and Memory Management" (http://tinyurl.com/ckpjx) recommande l'appel à la fonction "release" : ---http://tinyurl.com/ckpjx While this approach [utiliser LogFactory.getLog()] is efficient, it can lead to memory leaks if container implementors are not careful to call LogFactory.release() --- Si je comprend bien le "container implementors" c'est le serveur que j'utilise. Donc ça serait à lui de faire le "release()" ? Là j'avoue que je suis un peu largué :) Troisièmement, comment limitez-vous le coup d'évaluation du paramètre ? Toujours sur "commons logging" le chapitre "Code Guards" (http://tinyurl.com/bmphy) recommande l'utilisation de la méthode "log.is<Priority>()". Ce qui donne par exemple : if (logger.isDebugEnabled()) { logger.debug("message"); } Pour l'instant je fais ça manuellement au cas par cas mais j'ai découvert récemment "Just4log" (http://just4log.sourceforge.net/) qui modifie les .class pour ajouter les if. Utilisez-vous ce genre d'outil ? Personnellement, étant donnée que je ne concatène pas directement les chaînes de caractères avec "+" mon code ressemble plus souvent à ça : if (logger.isDebugEnabled()) { unStringBuilder.setLength(0); unStringBuilder.append("texte ").append(valeur); ... logger.debug(unStringBuilder.toString()); } Donc l'interet d'un outil de ce genre est dans mon cas assez limité. De plus, la documentation de "Just4log" ne précise pas si plusieurs appelles sont regroupés dans un seule if. Il y a aussi le cas ou le message est simple et ne nécessite pas de if pour limiter le surcoût de l'évaluation. 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à. Merci pour vos réponses/conseils
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Hacking SSL, Sebastien Layer |
|---|---|
| Next by Date: | Re: Hacking SSL, Herve AGNOUX |
| Previous by Thread: | RE : Probléme de lock CVS avec Eclipse, Tanaré Florent |
| Next by Thread: | Re: "Best practice" pour le log, Herve AGNOUX |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |