7
votes

Syntaxe de journalisation SLF4J

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? XXX


0 commentaires

4 Réponses :


11
votes
LOG.info("error = " + errmsg);

4 commentaires

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 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); doit être utilisé. Aucune autre option ne doit être envisagée. Aussi Stackoverflow.com/Questtions/10555409/...



3
votes

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));


0 commentaires

0
votes

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 xxx


0 commentaires

2
votes

Une altération du premier formulaire est la meilleure xxx

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 errsg dans "ERROR =" , sauf si errRSG est un loveable et info L'enregistrement de niveau est activé. Ensuite, l'enregistreur imprimera une chaîne stracktrace.

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.

Cependant, comme Tomasz Nurkiewicz répondit, le premier formulaire log.info ("error = {}", errsg); est le meilleur. La raison, cependant, n'est-ce pas que string.format () 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? .

La raison Le premier formulaire fonctionne mieux est que si la journalisation du niveau info est désactivée, puis le cadre de journalisation ne doit pas nécessiter d'appeler errsg.tostring () et il n'a pas à exécuter string.format () du tout. Le seul cas où errsg.tostring () n'a aucun coût de performance est si errsg est une chaîne .

i aussi ne suggérerait pas de blancheur autour du = autant de logements de journal tels que Splunk indexera automatiquement error = errsg dans un champ et une paire de valeur. De plus, si cela est vraiment une erreur, je l'écrirais dans le niveau erreur () niveau, pas info () . Et très probablement il y a une exception loveable quelque part avant ce code qui devrait entrer dans le paramètre loveable .

et, enregistreur , alors qu'il est probablement déclaré comme final , est un objet mutable, de sorte que cela devrait être en minuscule. Voir doit être déclaré un "enregistreur final statique" en majuscule -Case? .

ce qui signifie que la réponse doit vraiment être xxx


1 commentaires

Intéressant, depuis l'écriture de cette réponse, je suis maintenant en désaccord avec moi-même. mise à jour