Qual é a abordagem correta para registrar uma mensagem preenchida e um rastreamento de pilha da exceção?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Eu gostaria de produzir uma saída semelhante a esta:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j versão 1.6.1
{}
mais, a questão do gosto ...
toString()
método dos argumentos pode ser caro. Com essa sintaxe, apenas uma referência a cada objeto é passada e o toString()
método é chamado apenas se a mensagem específica estiver realmente sendo registrada. Objetos referenciados em uma info()
chamada de log não terão seu toString()
método chamado se o nível de log for WARN
superior ou superior. A {}
sintaxe é um lembrete para os usuários de que essa não é uma String.format()
operação semelhante, ou seja, eles devem passar objetos em vez de representações de cadeias de caracteres.