Throwableインスタンスを生成してスタックトレースを取得します。
パフォーマンスへの影響は大きいので、常時出力はしない方がよいです。
private void methodA() {
dbg("test");
}
private static void dbg(String msg) {
StackTraceElement[] stack = new Throwable().getStackTrace();
String className = stack[1].getClassName();
String method = stack[1].getMethodName();
int line = stack[1].getLineNumber();
StringBuilder buf = new StringBuilder(60);
buf.append(msg)
.append("[")
// sample.package.ClassName.methodName:1234
.append(className).append(".").append(method).append(":").append(line)
.append("]");
android.util.Log.d("tag", buf.toString());
}
ログメソッドの呼び出し元の情報を表示します。
# スタックトレースからの取得なので、メソッドスタックを意識する必要はあります。
下記のような出力結果になります。
11-26 07:16:43.419: E/tag(649): test[yuki.test.IncludeTestActivity.methodA:2]
以上です。