2012年6月21日木曜日

AndroidのLogCatのTagで「クラス名.メソッド名:行番号」と表示するには?

どうやらAndroidのLogCatでのログ表示は、アプリケーション名は出るもののクラス名やメソッド名・行番号も表示できないらしい。

Log.v("ClassName.MethodName:LineNumber", "ログ表示");

などと自分で文字列を書いてやれば良いのだろうけど、こんなのマンドクサくてやってられないですよ。

徹底的にマンドクサさを排除することこそコーダーの本懐。そこでこうしてやった。

package jp.example.utils;

public class Util {

  public static final String getTag() {
    StackTraceElement ste = Thread.currentThread().getStackTrace()[3];
    String className = ste.getClassName();
    className = className.substring(className.lastIndexOf(".") + 1);
    String methodName = ste.getMethodName();
    int lineNum = ste.getLineNumber();
    return className + "." + methodName + ":" + lineNum;
  }

}

このクラスがあれば、上のコードはこうなる。

Log.v(Util.getTag(), "ログ表示");

タグ書きのための時間が節約できて、ほんの少しだけど、確実にコーディングが速くなる。

しかし、コーディングが速くなることより、精神的ストレスが軽減されることの方がもっと大事と思う。