- PR -

ExceptionのstackTraceをLogging APIで出力したい

1
投稿者投稿内容
Takaishi
常連さん
会議室デビュー日: 2004/10/11
投稿数: 24
投稿日時: 2004-12-04 18:17
例外情報のログ出力方法について壁にあたっています。

ExceptionクラスのprintStackTrace文の内容をLogging APIの
出力先となっているログファイルに出力するのが目標です。
printStackTrace()メソッドの引数にPrintWriterを渡す方法も
あるかと思いますが、できれば他のログと同様Logging APIで
出力したいと思います(出力先の設定箇所等の関係)。

Logging API はJakarta Commons Logging + Log4j です。

何か方法をご存じでしたらご教授ください。
よろしくお願いします。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-12-05 00:42

Commons Loggingは使った事が無いですが、Throwableを引数に取る
メソッドでスタックトレースがログ出力されませんでしたっけ?

自力で実装するのであれば、Throwable#getStackTrace() が使えると思います。
# と言うかJ2SE APIのJavaDocで使えそうなAPIが無いか確認しましたか?
Takaishi
常連さん
会議室デビュー日: 2004/10/11
投稿数: 24
投稿日時: 2004-12-05 19:53
ありがとうございます。
YOU@ITさんのアドバイスに従い、目的の処理を実装できました。

引用:

YOU@ITさんの書き込み (2004-12-05 00:42) より:

Commons Loggingは使った事が無いですが、Throwableを引数に取る
メソッドでスタックトレースがログ出力されませんでしたっけ?

自力で実装するのであれば、Throwable#getStackTrace() が使えると思います。
# と言うかJ2SE APIのJavaDocで使えそうなAPIが無いか確認しましたか?




Throwable#getStackTrace()の戻り値、
StackTraceElementの要素をLoggingのログ出力メソッド(fatal()など)に
渡してやればよいようです。
そのほかThrowableの実装が参考になりました。
ありがとうございました。
星野
会議室デビュー日: 2003/02/13
投稿数: 3
お住まい・勤務地: 茨城
投稿日時: 2004-12-06 00:52
Commons Loggingでしたら、
YOU@ITさんの言うとおり、Throwableを引数に取るメソッドを使えばよいと思います。

わざわざ Throwable#getStackTrace() を使って、次のように書かなくても、
コード:
	} catch (Exception e) {
		log.fatal(e.getStackTrace());
	}


Throwableを引数に取るメソッドを使って、以下のように書けるはずです。
コード:
	} catch (Exception e) {
		log.fatal("致命的なエラー", e);
	}




http://www.jajakarta.org/commons/logging-1.0.3/ja/withoutPrimary/org/apache/commons/logging/Log.html#fatal(java.lang.Object, java.lang.Throwable)
1

スキルアップ/キャリアアップ(JOB@IT)