電子書籍の厳選無料作品が豊富!

クラス内のどこかにデバッグ用のメソッドを埋め込んで
それがどのクラスで呼ばれたかPrintしたいのですが
最終的な呼び出し元(クラス、メソッド)を表示するにはどうしたらよいでしょうか?

現在以下のようなものを使っていますが、うまくクラスをたどった表示ができません。
es[2]としても同じです。

private static StackTraceElement[] es = new Exception().getStackTrace();

public static void MyDebugPrint(Object string) {
System.out.println("[" + es[1].getClassName() + "] " + string);
}

A 回答 (2件)

質問文の書き方だと、MyDebugPrint()が呼ばれる前にesに値が代入されてしまうのでうまく行きません。

MyDebugPrint()の中で
StackTraceElement[] es = new Exception().getStackTrace();
を実行しましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます!
直接の呼び出し元が分かるようになりました。

お礼日時:2013/12/01 21:06

単純にLog機能を使うのはだめでしょうか?



---------プログラム
package test;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Test {
public static void main(String[] args) {
Logger.getGlobal().setLevel(Level.INFO);
Logger.getGlobal().info("test msg");
}
}

---------出力
12 01, 2013 6:39:10 午後 test.Test main
情報: test msg
    • good
    • 0
この回答へのお礼

ありがとうございます。
余計なimportはしたくなかったので メソット内にStackTraceを置く方法で解決しました。

お礼日時:2013/12/01 21:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!