Was ist der richtige Ansatz, um sowohl eine aufgefüllte Nachricht als auch eine Stapelverfolgung der Ausnahme zu protokollieren?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Ich möchte eine ähnliche Ausgabe erstellen:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j Version 1.6.1
{}
mehr, die Frage des Geschmacks ...
toString()
Methode der Argumente kann teuer sein. Mit dieser Syntax wird nur ein Verweis auf jedes Objekt übergeben und die toString()
Methode wird nur aufgerufen, wenn die bestimmte Nachricht tatsächlich protokolliert wird. Bei Objekten, auf die in einem info()
Protokollaufruf verwiesen wird, wird die toString()
Methode nicht aufgerufen, wenn die Protokollstufe WARN
oder höher ist. Die {}
Syntax erinnert Benutzer daran, dass dies keine String.format()
ähnliche Operation ist, dh sie sollten Objekte übergeben und keine Zeichenfolgendarstellungen davon.