参考:《第一行代码》第13章
#########################################################
摘要:
打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的哪些日志,在项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄露出去。
因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。这些操作只需定制一个自己的日志工具即可轻松完成。
新建一个LogUtil类:
import android.util.Log;
/**
* Created by root on 15-11-2.
*/
public class LogUtil {
public static final int VERBOSE = 1;
public static final int DEBUG=2;
public static final int INFO=3;
public static final int WARN=4;
public static final int ERROR=5;
public static final int NOTHING=6;
public static final int LEVEL=VERBOSE;
public static void v(String tag, String msg) {
if (LEVEL <= VERBOSE) {
Log.v(tag, msg);
}
}
public static void d(String tag, String msg) {
if (LEVEL <= DEBUG) {
Log.d(tag, msg);
}
}
public static void i(String tag, String msg) {
if (LEVEL <= INFO) {
Log.i(tag, msg);
}
}
public static void w(String tag, String msg) {
if (LEVEL <= WARN) {
Log.w(tag, msg);
}
}
public static void e(String tag, String msg) {
if (LEVEL <= ERROR) {
Log.e(tag, msg);
}
}
}
接下来提供了v() / d() / i() / w() / e()这五个自定义的日志方法,在其内部分别调用了Log.v() / Log.d() / Log.i() / Log.w() / Log.e()这五个方法来打印日志,并且在打印日志之前还要进行判断--只有当LEVEL常量的值小于或等于对应日志级别值的时候,才会将日志打印出来
完成LogUtil类的创建之后,就可以像使用普通的日志工具一样使用LogUtil,比如打印一行DEBUG级别的日志:
LogUtil.d("TAG", "debug log")
打印一行WARN级别的日志:
LogUtil.w("TAG", "warn log")
另外,我们只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为。比如让LEVEL等于VERBOSE就可以把所有的日志都打印出来,让LEVEL等于WARN就可以只打印警告以上级别的日志,让LEVEL等于NOTHING就可以把所有日志都屏蔽掉。
在开发阶段将LEVEL指定成VERBOSE,当项目正式上线的时候将LEVEL指定成NOTHING就可以了。