android一种非常好的打印log的封装的方法(可直接获得主调用方的方法名)

平时使用android里的Log类打印信息的时候后面会跟着一个TAG和一个信息,通常呢大家都是想打印调用Log的方法名,所以每次都要写一些不同的字符串,那么接下来这种方法可以有效的避免这些操作。

public class LogHelper {
    private static String sRootTag = "dengck";

    public static void setRootTag(String rootTag) {
        sRootTag = rootTag;
    }

    /**
     * 打印log详细信息
     */
    public static void d(String tag, String content) {
        Log.d(sRootTag + "_" + tag, content);
    }

    /**
     * 得到调用此方法的线程的线程名
     * 
     * @return
     */
    public static String getThreadName() {
        StringBuffer sb = new StringBuffer();
        sb.append(Thread.currentThread().getName());
        sb.append("-> ");
        sb.append(Thread.currentThread().getStackTrace()[3].getMethodName());
        sb.append("()");
        sb.append(" ");
        return sb.toString();
    }

 假设现在有这么一个类:

public class TestLog {

    private static final String TAG = "TestLog";

    public void test1() {
        LogHelper.d(TAG, LogHelper.getThreadName());
    }

    public void test2() {
        LogHelper.d(TAG, LogHelper.getThreadName()+" say something");
    }
}

 如果现在我们分别调用了test1()和test2(),则在log中将会分别打印

dengck_TestLog(线程序号):main->test1()

dengck_TestLog(线程序号):main->test2() say something

而且主TAG还可以设置,这样用在不同的项目中就可以设置不同的根TAG,查看log的时候查看这个根TAG就可以了.或者也可以查看某一个子TAG.最重要的是使用同一句代码就可以打印对应的方法了,而不用单独在给第二个参数赋值啦!

猜你喜欢

转载自dandy-deng.iteye.com/blog/2220672