Android开发中定制自己的日志工具
2016-08-28 14:26
429 查看
今天分享的东西是以前看过的Android大神郭霖写的《第一行代码》一书中的一个小的章节。和打印日志信息有关,但是很适合开发中使用,大家可以好好的利用起来;下面就是书中的内容。
相信很多的Android开发人员都知道使用Android打印日志的工具LogCat,虽然Android中自带的日志工具功能非常强大,但也不能说是完成没有缺点,例如在打印日志的控制方面就做得不够好。
打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正常上线后仍会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄漏出去。
那该怎么办呢,难道要一行一行把所有打印日志的代码都删除?显然这不是什么好点子,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
看起来好像是挺高级的一个功能,其实并不复杂,我们只需要定制一个自己的日志工具就可以轻松完成了。比如新建一个LogUtil类,代码如下所示:
从上面的代码可以看到,我有和原文不一样的地方,就是加了一个参数msg值为null的判断,防止日志信息值为null的出现。还有就是我加了一些注释,可以帮助大家更好的理解这个工具类的作用。
可以看到,我们在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,比如打印一行DEBUG级别的日志就可以这样写:
打印一行WARN级别的日志就可以这样写:
然后我们只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为了。比如让LEVEL等于VERBOSE就可以把所有的日志都打印出来,让LEVEL等于WARN就可以只打印警告以上级别的日志,让LEVEL等于NOTHING就可以把所有日志都屏蔽掉。
使用了这种方法之后,刚才所说的那个问题就不复存在了,你只需要在开发阶段将LEVEL指定成VERBOSE,当项目正式上线的时候将LEVEL指定成NOTHING就可以了。
相信很多的Android开发人员都知道使用Android打印日志的工具LogCat,虽然Android中自带的日志工具功能非常强大,但也不能说是完成没有缺点,例如在打印日志的控制方面就做得不够好。
打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正常上线后仍会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄漏出去。
那该怎么办呢,难道要一行一行把所有打印日志的代码都删除?显然这不是什么好点子,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
看起来好像是挺高级的一个功能,其实并不复杂,我们只需要定制一个自己的日志工具就可以轻松完成了。比如新建一个LogUtil类,代码如下所示:
package com.example.imageloadertest; import android.util.Log; /** * 自定义的日志打印工具类 * @author 邹奇 * */ public class LogUtil { /** * 定义6个静态常量,用来表示日志信息的打印等级 * 由1到5打印等级依次升高 */ 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; /** * 该静态常量的值用来控制你想打印的日志等级; * 比如当前LEVEL的值为常量1(VERBOSE),那么你以上5个日志等级都是可以打印的; * 假如当前LEVEL的值为常量2(DEBUG),那么你只能打印从DEBUG(2)到ERROR(5)之间的日志信息; * 假如你要是不想让日志信息打印出现,那么将LEVEL的值置为NOTHING即可。 */ public static final int LEVEL = VERBOSE; // 调用Log.v()方法打印日志 public static void v(String tag, String msg){ if(LEVEL <= VERBOSE){ /** * 加了一个日志信息值的判断,为了防止参数msg的值为null情况的出现 */ if(msg != null){ Log.v(tag, msg); }else { Log.v(tag, "is NULL"); } } } // 调用Log.d()方法打印日志 public static void d(String tag, String msg){ if(LEVEL <= DEBUG){ if(msg != null){ Log.d(tag, msg); }else { Log.d(tag, "is NULL"); } } } // 调用Log.i()方法打印日志 public static void i(String tag, String msg){ if(LEVEL <= INFO){ if(msg != null){ Log.i(tag, msg); }else { Log.i(tag, "is NULL"); } } } // 调用Log.w()方法打印日志 public static void w(String tag, String msg){ if(LEVEL <= WARN){ if(msg != null){ Log.w(tag, msg); }else { Log.w(tag, "is NULL"); } } } // 调用Log.e()方法打印日志 public static void e(String tag, String msg){ if(LEVEL <= ERROR){ if(msg != null){ Log.e(tag, msg); }else { Log.e(tag, "is NULL"); } } } }
从上面的代码可以看到,我有和原文不一样的地方,就是加了一个参数msg值为null的判断,防止日志信息值为null的出现。还有就是我加了一些注释,可以帮助大家更好的理解这个工具类的作用。
可以看到,我们在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,比如打印一行DEBUG级别的日志就可以这样写:
LogUtil.d("TAG", "This is debug info.");
打印一行WARN级别的日志就可以这样写:
LogUtil.w("TAG", "This is warn info.");
然后我们只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为了。比如让LEVEL等于VERBOSE就可以把所有的日志都打印出来,让LEVEL等于WARN就可以只打印警告以上级别的日志,让LEVEL等于NOTHING就可以把所有日志都屏蔽掉。
使用了这种方法之后,刚才所说的那个问题就不复存在了,你只需要在开发阶段将LEVEL指定成VERBOSE,当项目正式上线的时候将LEVEL指定成NOTHING就可以了。
每天进步一点点!加油!
相关文章推荐
- android app 开发 如何定制自己的日志工具_系统优化 日志控制
- Android开发实用技巧之三:定制自己的日志工具LogUtil.java
- Android开发之定制自己的日志工具类
- Android 定制自己的日志工具 《第一行代码》
- android 定制自己的日志工具
- android学习——定制自己的日志工具
- android#定制自己的日志工具
- Android进阶之定制自己的日志工具03
- android中定制自己的日志打印工具
- 安卓开发:定制自己的日志工具
- Android开发工具Eclipse自己常用的几个快捷键
- Android开发:定制自己的Camera
- 用Go写了一个小工具,用他脚本下载日志文件,然后让开发自己去下载
- 定制自己的日志工具
- Android之UncaughtExceptionHandler定制自己的错误日志系统
- android开发------------------Log日志工具类(LogUtils)
- 定制自己的日志(Log)工具
- 第一行代码(第二版)之定制自己的日志控制工具
- Android开发之Volley定制自己的Request
- 第一行代码-13.3 定制自己的日志工具