7
私はスレッド名とロガー名を微調整したいので、私はLogback用のCustomLayoutを書いています。ログバックのドキュメントには、ログバックカスタムレイアウトからスタックトレースをプリントする方法は?
があります。上記の例では、doLayoutメソッドはイベントに含まれるすべての例外を無視します。実際のレイアウトの実装では、おそらく例外の内容も印刷したいと思うでしょう。
もちろん、デフォルトの実装ではスタックトレースを出力したいと思います。しかし、私はそうするための指示を見つけることができません。私はソースをダウンロードして見回しました。次のように動作しているようです:
/**
* How much stack to print if there's an exception.
*/
private List<String> stackOptionList = Arrays.asList("full");
@Override
public String doLayout(ILoggingEvent event) {
StringBuffer sbuf = new StringBuffer(128);
. . .
IThrowableProxy proxy = event.getThrowableProxy();
if (proxy != null) {
ThrowableProxyConverter converter = new ThrowableProxyConverter();
converter.setOptionList(stackOptionList);
converter.start();
sbuf.append(converter.convert(event));
sbuf.append(CoreConstants.LINE_SEPARATOR);
}
. . .
return sbuf.toString();
}
より良い/より承認された方法がありますか?
良い点 - カスタムコンバータははるかにクリーンです。ありがとう! – vanmelle
@ceki doLayoutごとに新しいThrowableProxyConverterを作成、開始、停止する必要がありますか? – Ittai