一:使用Android自带的日志工具Log取代java中传统System.out.printlin()。
(你也可以直接看二.定制自己的日志工具)
在定义自己的日志工具前,我们首先得学会使用Android自带的日志工具Log取代java中传统System.out.printlin()。
因为System.out.printlin()打印日志没有日志级别、无法确定打印时间、不能添加过滤器并且不可控制。
而Android提供的Log刚好能解决以上问题。
Log类中的日志级别由低到高分别为:
Log.v()、 Log.d()、 Log.i()、 Log.w()、 Log.e()
用法简单,只需在需要打印的地方使用适当的级别,如:
Log.d("MainActivity","MainActivity start");
第一个参数是tag,一般传入类名,主要用于在过滤器中对打印信息就行过滤。第二个参数就是想要打印的具体内容。
通过一我们学会了使用Android自带的Log类。但是,Log类在全局控制方面做的还是不足的。比如:现在我们在项目
中为了调试,在许多地方打印了大量日志,而这些打印信息在项目正式上线之后仍能正常显示,这样就会降低我们程序
的运行效率,还可能因为泄露机密带来安全问题。所以,为了避免尴尬的去一行行删除打印信息,我们可以通过写一个
自己的日志工具类解决这个问题:
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);
}
}
}
然后我们在需要打印日志的地方通过调用LogUtil中的方法就可以实现打印了,比如
LogUtil.d("TAG", "debug log");
这样,我们就可以通过修改LEVEL的值来控制全局的打LEVEL等于印行为了。比如设置LEVEL等于VERBOSE就可以打印所有日志,设置LEVEL等于WARN则只答应警告级别以上的日志,那么,当项目要上线时,我们就可以通过设置LEVEL等于NOTHING来把所有日志屏蔽掉了。
参考:郭霖《第一行代码》