今天分享的东西是以前看过的Android大神郭霖写的《第一行代码》一书中的一个小的章节。和打印日志信息有关,但是很适合开发中使用,大家可以好好的利用起来;下面就是书中的内容
-
相信很多的Android开发人员都知道使用Android打印日志的工具LogCat,虽然Android中自带的日志工具功能非常强大,但也不能说是完成没有缺点,例如在打印日志的控制方面就做得不够好。
-
打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正常上线后仍会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄漏出去。
-
那该怎么办呢,难道要一行一行把所有打印日志的代码都删除?显然这不是什么好点子,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
object LogUtil { /** *定义6个静态常量,用来表示日志信息的打印等级 * 由1到5打印等级依次升高 */ private const val VERBOSE = 1 private const val DEBUG = 2 private const val INFO = 3 private const val WARN = 4 private const val ERROR = 5 private var level = VERBOSE fun v(tag: String, msg: String) { if (level <= VERBOSE) { Log.v(tag, msg) } } fun d(tag: String, msg: String) { if (level <= DEBUG) { Log.d(tag, msg) } } fun i(tag: String, msg: String) { if (level <= INFO) { Log.i(tag, msg) } } fun w(tag: String, msg: String) { if (level <= WARN) { Log.w(tag, msg) } } fun e(tag: String, msg: String) { if (level <= ERROR) { Log.e(tag, msg) } } }
-
只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为了。比如让LEVEL等于VERBOSE就可以把所有的日志都打印出来,让LEVEL等于WARN就可以只打印警告以上级别的日志,让LEVEL等于NOTHING就可以把所有日志都屏蔽掉。
-
使用了这种方法之后,刚才所说的那个问题就不复存在了,你只需要在开发阶段将LEVEL指定成VERBOSE,当项目正式上线的时候将LEVEL指定成NOTHING就可以了。