2009/01/25

Javaで StackTrace を Log へ書き込む方法

Android上でJavaコードを追いかけていて、StackTrace を Log クラスへ書き込みたいな、と思いました。

「古のまま止まっている Java の知識によれば、確か printStackTrace() があった筈だから、それを Stream に流して、文字列を作って...」などと考えていたら、J2SE 1.4以降では、Throwable.getStackTrace()という大変メソッドのあることがCodeZineの記事で分かりました。

というわけで、こんな簡単なコードで要求が満たせました(正しくは、getLineNumber() がマイナス値の場合などを考えるべきです)。
Throwable t = new Throwable();
for (StackTraceElement ste: t.getStackTrace()) {
    Log.v(TAG, "at " + ste.getClassName()
        + "." + ste.getMethodName()
        + "(" + ste.getFileName()
        + ":" + ste.getLineNumber()
        + ")");
}
分かりやすい記事を公開してくださっているartonさん、どうもありがとうございました。

0 件のコメント:

コメントを投稿