J'ai 3 développeurs sur un projet qui ont des styles différents lors de la rédaction de la journalisation. Laquelle de ces variations est la meilleure?
4 Réponses :
LOG.info("error = " + errmsg);
Je suppose que le 2e est utilisé pour des exceptions, non? par exemple. Log.info ("Fichier de lecture d'erreur", e);
@PREGNANTMOM: Tu es absolument juste! Le errsg code> m'a fait croire que ce n'est pas une exception. Corrigé ma réponse.
Personnellement, je préfère la troisième à l'aide de la concaténation de la chaîne. En ce qui concerne la performance, la concaténation de cordes peut être plus rapide: Stackoverflow.com/Questtions/925423/...
D'accord, log.info ("error = {}", errsg); code> doit être utilisé. Aucune autre option ne doit être envisagée. Aussi
C'est le meilleur ( JCABI-LOG au-dessus de SLF4J):
private static Logger LOG = Logger.getLogger(Foo.class); LOG.info(String.format("error=%s", errmsg));
Ci-dessous est la pâte de copie exacte de la réelle SLF4J Javadoc. Sa vaut la peine de visiter ici: http://www.slf4j.org/api/org/ slf4j / logger.html
Une altération du premier formulaire est la meilleure comme d'autres personnes, le deuxième exemple doit être une erreur car il n'y a pas de jeton de format pour insérer pendant de nombreuses années, j'ai préféré la concaténation de la chaîne, la troisième forme. J'ai trouvé plus facile de lire des mois ou des années plus tard lorsque je reviens pour lire le code. P> Cependant, comme Tomasz Nurkiewicz répondit, le premier formulaire La raison Le premier formulaire fonctionne mieux est que si la journalisation du niveau code> info code> est désactivée, puis le cadre de journalisation ne doit pas nécessiter d'appeler i aussi ne suggérerait pas de blancheur autour du et, ce qui signifie que la réponse doit vraiment être p> errsg Code> dans
"ERROR =" CODE>, sauf si
errRSG code> est un
loveable code> et
info code> L'enregistrement de niveau est activé. Ensuite, l'enregistreur imprimera une chaîne stracktrace. P>
log.info ("error = {}", errsg); code> est le meilleur. La raison, cependant, n'est-ce pas que
string.format () code> est plus rapide que la concaténation de la chaîne. Ce n'est pas le cas. Voir Est-ce une meilleure pratique de Utilisez String.Format sur la concaténation à la chaîne dans Java? . P>
errsg.tostring () code> et il n'a pas à exécuter
string.format () code> du tout. Le seul cas où
errsg.tostring () code> n'a aucun coût de performance est si
errsg code> est une chaîne
code>. P>
= code> autant de logements de journal tels que Splunk indexera automatiquement
error = errsg code> dans un champ et une paire de valeur. De plus, si cela est vraiment une erreur, je l'écrirais dans le niveau
erreur () code> niveau, pas
info () code>. Et très probablement il y a une exception code> loveable code> quelque part avant ce code qui devrait entrer dans le paramètre code> loveable code>. P>
enregistreur code >, alors qu'il est probablement déclaré comme
final code>, est un objet mutable, de sorte que cela devrait être en minuscule. Voir doit être déclaré un "enregistreur final statique" en majuscule -Case? . P>
Intéressant, depuis l'écriture de cette réponse, je suis maintenant en désaccord avec moi-même. mise à jour