設定されたメッセージと例外のスタックトレースの両方をログに記録する正しい方法は何ですか?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
次のような出力を生成したいと思います。
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4jバージョン1.6.1
3
slf4jが標準の%sスタイルの代わりに独自のフォーマット文字列構文を使用する理由がわかりません。迷惑です。
—
キー
@KeithTyler私は
—
Betlista
{}
もっと好きです、味の問題...
@KeithTyler
—
user149408
toString()
引数のメソッドは高価になる可能性があります。この構文では、各オブジェクトへの参照のみが渡さtoString()
れ、特定のメッセージが実際にログに記録されている場合にのみメソッドが呼び出されます。info()
ログ呼び出しで参照されるオブジェクトtoString()
は、ログレベルがWARN
それ以上の場合、メソッドが呼び出されません。{}
構文は、これがないことをユーザーに思い出させてくれますString.format()
様操作、彼らはその目的ではなく、文字列表現を渡す必要がありますすなわち。