26

ロガーを使用して catch ブロックでキャッチされたすべての例外を出力したい状況があります。

 try {
        File file = new File("C:\\className").mkdir();
        fh = new FileHandler("C:\\className\\className.log");
        logger.addHandler(fh);
        logger.setUseParentHandlers(false);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
    } catch (Exception e) {
        logger.info(e);
    }

エラーロガーを適用できませんjava.io.Exception...

私の懸念は、try ブロックで非常に多くのことを行い、catch(Exception e) として 1 つの catch ブロックのみを保持する場合です。次に、catch ブロックでキャッチされたあらゆる種類の例外を出力するロガーを使用する方法はありますか? 注: java.util.logging.Logger API を使用しています。

4

4 に答える 4

40

おそらく、使用しているロガーを明確にする必要があります。

org.apache.commons.logging.Logインターフェイスにはメソッドvoid error(Object message, Throwable t)(およびメソッドvoid info(Object message, Throwable t)) があり、カスタム メッセージと共にスタック トレースをログに記録します。Log4J 実装にもこのメソッドがあります。

したがって、おそらく次のように書く必要があります。

logger.error("BOOM!", e);

INFO レベルでログに記録する必要がある場合 (ただし、奇妙なユースケースかもしれません)、次のようにします。

logger.info("Just a stack trace, nothing to worry about", e);

それが役に立てば幸い。

于 2013-04-04T08:16:27.173 に答える
4

以下のようにスタック トレースを記録してみてください。

logger.error("Exception :: " , e);
于 2013-04-04T07:59:07.460 に答える
0

このメソッドを使用して、例外スタックを String に記録できます。

 public String stackTraceToString(Throwable e) {
    StringBuilder sb = new StringBuilder();
    for (StackTraceElement element : e.getStackTrace()) {
        sb.append(element.toString());
        sb.append("\n");
    }
    return sb.toString();
}
于 2013-04-04T07:55:25.083 に答える