小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
换个日志打印类吧
最近观摩别人代码,发现有个很不错的日志打印类,它不仅能看出当前日志的线程,也可以定位日志在第几行,这个就比较方便了,来看看是哪个库吧。
我的日志类
我常用的是下面这个日志工具类,它伴随了我至少有五年的时间,每次新项目来的时候就会复制它,很简单,没有什么可以讲解的地方。
唯一有个地方是BuildConfig.DEBUG
判断的是开发项目的环境,这样正式环境下就可以自动关闭日志,测试环境下输出日志。
那么这个日志工具类也没有什么亮点,接着看别人家的日志类
public class LogWrapper {
/**
* 调试开关,无论是自动还是手动都能很好的控制调试状态
*/
public static final boolean DEBUG = BuildConfig.DEBUG;
// private static final boolean DEBUG = true;
private static final String TAG = "LogWrapper";
public static void v(String tag, String msg) {
if (DEBUG)
Log.v(tag, msg);
}
public static void d( String msg) {
if (DEBUG)
Log.d(TAG, msg);
}
public static void d(String tag, String msg) {
if (DEBUG)
Log.d(tag, msg);
}
public static void i(String tag, String msg) {
if (DEBUG)
Log.i(tag, msg);
}
public static void w(String tag, String msg) {
if (DEBUG)
Log.w(tag, msg);
}
public static void e(String tag, String msg) {
if (DEBUG)
Log.e(tag, msg);
}
public static void e(String msg) {
if (DEBUG)
Log.e(TAG, msg);
}
public static void w(String tag, String msg, Throwable ex) {
if (DEBUG)
Log.w(tag, msg, ex);
}
public static void e(String tag, String msg, Throwable ex) {
if (DEBUG)
Log.e(tag, msg, ex);
}
}
别人家的日志类
看看图
看到了吗,花里胡哨的,但是它可以很明显且好用的几个功能。
-
判断日志的线程,可以很简单的看出当前日志是在主线程还是子线程,是子线程的话,我们就不能去更新界面。
-
定位日志的打印位置。是不是有什么有一些莫名其妙的日志打印出来,我们却不知道日志来自哪里,而这个库点击蓝色部分的链接,就可以跳转到相应位置。
-
json/xml 支持输出。一般都是需要Gson转成字符串,这个库可以直接输出,剩了一步。
-
支持拦截器操作。简单几步过滤日志。
它的名字叫logger
,在github上已经有13K的Star,大家用起来吧。