12

スレッド名とロガー名を微調整したいので、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();
}

より良い/より承認された方法はありますか?

4

2 に答える 2

7

ThrowableProxyConverter は、スタック トレースを出力する方法です。したがって、使用するコードは適切に見えます。ただし、CustomLayout を記述する代わりに、PatternLayout をカスタム コンバーターに適合させることができます。ほとんどの場合、これがより簡単で優れたオプションです。

于 2013-06-04T06:45:34.170 に答える