Jakie jest prawidłowe podejście do rejestrowania zarówno wypełnionego komunikatu, jak i śladu stosu wyjątku?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Chciałbym uzyskać wynik podobny do tego:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j wersja 1.6.1
{}
bardziej, kwestia smaku ...
toString()
Metoda argumentów może być droga. Dzięki tej składni przekazywane jest tylko odwołanie do każdego obiektu, a toString()
metoda jest wywoływana tylko wtedy, gdy konkretny komunikat jest faktycznie rejestrowany. Do obiektów, do których odwołuje się info()
wywołanie dziennika, nie zostanie wywołana ich toString()
metoda, jeśli poziom dziennika jest WARN
wyższy lub wyższy. {}
Składnia jest przypomnieniem dla użytkowników, to nie jest String.format()
-jak operacja, czyli powinny one przechodzić obiektów zamiast ich reprezentacje ciąg.