在写项目时为了方便调试,往往会在代码的很多地方都打印大量的日志。最近项目基本完成了,这时却有一个非常让人头疼的问题,就是之前用于调试的那些日志在项目上线之后仍旧会照常打印,这样不仅会降低程序的运行效率,还有可能将一些重要的数据泄露出去。
为了不让项目上线后继续打印这些日志,就有人会想到干脆把之前的日志输出都删掉或者注释掉吧。但是如果是很大的项目,这么做恐怕谁也受不了吧,而且后期版本迭代过程中还有可能需要调试,难不成再一个一个的取消注释么。。
最理想的就是能够自由的控制日志的打印,当程序处于开发阶段就让日志打印,上线之后就把日志屏蔽掉。下边给出一种具体的代码实现,仅供参考:
package com.glp.demo.utils;
import android.util.Log;
/**
* log工具类 控制要显示log的类别
* Created by glp on 2017/6/9.
* 开发期间为了方便调试,在代码的很多地方都打印了大量的日志。可是当项目临近上线时,
* 之前调试的那些日志在上线后仍然会照常打印,这样不仅会降低程序的运行效率,还可能导致数据泄露!
* <p>
* 通过修改level的初始化值,达到过滤log类别或者直接关掉所有的日志打印。
*/
public class LogUtil {
public static int VERBOSE = 1; // 显示全部log日志
public static int DEBUG = 2; // 显示debug info warn error
public static int INFO = 3; // 显示info warn error
public static int WARN = 4; // 显示warn error
public static int ERROR = 5; // 只显示 error 级别的log
public static int NOTHING = 6; // 所有的日志都不打印 [ps:上线时使用]
public static int level = VERBOSE; // 修改这里的level值为上方某一个即可
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);
}
}
}
我们只需要修改level变量的值,就可以自由控制日志的打印了。比如让level等于VERBOSE就可以把所有的日志都打印出来,让level等于ERROR就可以只打印错误级别的日志,让level等于NOTHING就可以把所有的日志都屏蔽掉。