Quelle est la bonne approche pour consigner à la fois un message rempli et une trace de pile de l'exception?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Je voudrais produire une sortie similaire à ceci:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j version 1.6.1
{}
plus, la question du goût ...
toString()
méthode des arguments peut être coûteuse. Avec cette syntaxe, seule une référence à chaque objet est transmise et la toString()
méthode n'est appelée que si le message particulier est réellement enregistré. Les objets référencés dans un info()
appel de journal ne verront pas leur toString()
méthode appelée si le niveau de journal est WARN
supérieur ou égal à. La {}
syntaxe rappelle aux utilisateurs qu'il ne s'agit pas d'une String.format()
opération de type similaire, c'est-à-dire qu'ils doivent passer des objets plutôt que des représentations de chaîne de ceux-ci.