
Envoyé par
tatemilio2
J'ai vu qu'il faut tester si on est en mode debug par le code suivant [...] Si quelqu'un peut m'expliquer pourquoi.
Alors, ce test n'est pas nécessaire, dans le sens où si supprimes l'appel à isDebugEnabled ça marchera quand même... Cependant commencer par tester le niveau de log permet d'éviter des traitements inutiles.
Exemple :
logger.debug("Etat de bli[" + i + "] : " + bli[i].getState() );
Là on effectue au moins 1 appel de méthode et 3 concaténations afin de calculer le paramètre de la méthode debug, alors que le logger va peut-être finalement rejeter la chaîne de caractère car il est configuré de façon à n'écrire que les messages de niveau info ou supérieur...
En faisant précéder l'appel à la méthode debug par un test isDebugEnabled, on évite alors le calcul inutile du paramètre.
Par contre, on rajoute des tests "inutiles" pour les cas où le logger est configuré en mode debug, mais ce ne sont pas ces traitements qui sont les plus longs...
Sur un exemple comme logger.debug("TOTO") la différence est évidemment minime (mais je crois que la version avec test est quand même un tout petit poil plus rapide).

Envoyé par
tatemilio2
De plus j'aimerais savoir si l'utilisation de log de type info peuvent être pour diagnostiquer des incidents.
Tu peux évidemment logguer toutes les informations que tu veux avec le niveau de log que tu veux, mais il est quand même beaucoup plus logique de logguer les erreurs graves en tant que error, les incidents mineurs en tant que warning et les traces informatives en tant que info
Ne serait-ce que parce que les utilisateurs de ton appli[*] ne penseront pas en cas de problème à chercher les "erreurs" dans les "infos", et qu'ils auront peut-être même désactivé le log de niveau info...
[*]si ça se trouve tu es le seul utilisateur de ton projet, mais une bonne pratique "basique" consiste à regarder ton code ou ton application en te demandant si quelqu'un d'autre pourrait le comprendre...
Partager