您的位置:首页 > 其它

安卓开发:定制自己的日志工具

2016-07-12 19:10 323 查看
虽然Android自带的日志工具功能非常强大,但也不能说完全没有缺点,例如在打印日志的控制方面就做的不够好。

打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志,最近项目已经基本完成了,但是却有一个非常让人头痛的问题,之前用于调试的那些日志,在项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄露出去。

那该怎么办呢?难道要一行一行把所有打印日志的代码都删除?显然这不是什么好的方法,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线之后就把日志屏蔽掉。

我们只需要定制一个自己的日志工具就可以轻松完成了。比如新建一个LogUtil类,代码如下所示:

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<
4000
/span> v(String tag, String msg){
if (LEVEL <= VERBOSE) {
Log.v(tag, msg);
}
}

public static void d(String tag, String msg){
if (LEVEL <= DEBUG) {
Log.v(tag, msg);
}
}
public static void i(String tag, String msg){
if (LEVEL <= INFO) {
Log.v(tag, msg);
}
}
public static void w(String tag, String msg){
if (LEVEL <= WARN) {
Log.v(tag, msg);
}
}
public static void e(String tag, String msg){
if (LEVEL <= ERROR) {
Log.v(tag, msg);
}
}
}


可以看到,我们在LogUtil中先是定义了VERBOSE、DEBUG、INFO、WARN、ERROR、NOTHING这六个整型常量,并且它们对应的值都是递增的。然后又定义了一个LEVEL常量,可以将它的值指定为上面六个常量中的任意一个。

接下来我们就提供了v()、d()、i()、w()、e()这五个自定义的日志方法,在其内部分别调用Log.v()、Log.d()、Log.i()、Log.w()、Log.e()这五个方法来打印日志,只不过在这些自定义的方法中我们都加入了一个if判断,只有当LEVEL常量的值小于或等于对应日志级别值得时候,才会将日志打印出来。

这样就把一个自定义的日志工具创建好了,之后在项目里我们可以像使用普通的日志工具一样使用LogUtil,比如打印一行日志就可以这样写:

LogUtil.d("TAG","debug log");


LogUtil.w("TAG","warn log");


然后我们只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为。比如让LEVEL等于VERBOSE就可以把所有的日志都打印出来;让LEVEL等于NOTHING就可以把所有的日志屏蔽掉。

注:文章采摘自《第一行代码》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: