android一种非常好的打印log的封装的方法(可直接获得主调用方的方法名)
程序员文章站
2022-05-10 08:36:26
...
平时使用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.最重要的是使用同一句代码就可以打印对应的方法了,而不用单独在给第二个参数赋值啦!