Tips‎ > ‎

Log

2010/11/16 23:15 に まつぼっくり が投稿
アプリを開発しているときってデバッグで1行ずつ見ていくこともするのですが、LogCat で見るだけの時がすごく多いです。
Log.d(TAG, Message) と書けばいいのですが・・・

下記のようなものを出力したいんです。
07-13 16:16:56.990: DEBUG/*************(****): *****HomeActivity<1>#Message<jp.co.*****.android.*******.BaseAvtivity#onStop(line:37)>

クラス名1<番号>#メッセージ<クラス名#メソッド名2(line:行番号)>

クラス名1 : this.class.getSimpleName()
番号 : ログ番号(任意の数字)
メッセージ : 任意の文字列
クラス名2 : スーパークラスなど実際のクラス名(ファイル名でもいい)
メソッド名 : ログを出力したメソッド名
行番号 : ファイルの行番号

番号、メッセージは自分で記述する
クラス名、メソッド名、行番号は自動で挿入してもらいたい

ログを出力しても、数が多くなってくると「どこ?」って探してしまうのが面倒だったので
クラス名2、行番号を一緒に出力させたかったんです。

これは結構簡単にできました。

public static MyLog(Obj obj, int no, String message) {
  Throwable tr = new new Throwable();
  StackTraceElement st = tr.getStackTrace()[1];
  String message = msg + "<" + st.getClassName() + "#" + st.getMethodName()
+ "(line:" + st.getLineNumber() + ")" + ">");
  Log.d(TAG, message);
}

上記ソースだけだと、
Message<jp.co.*****.android.*******.BaseAvtivity#onStop(line:37)>
これだけが出力されます。

obj.toString() と no を追記すればいいだけです。ただ、obj が null の場合の処理は必要



Comments