自定义一个只在debug版本打印日志的logger类

在app开发过程中或者完成之后日志都有非常重要的作用。但是如果使用标准的Android Log.i/d/e/w方法可能会发生泄露app敏感数据的悲剧。

最简单的解决办法就是创建一个自定义的logger类,只在debug版本才打印log。这并不难。下面是一种实现方式,支持打印异常:

public class Logger {
    private final String TAG;
    private final int priority;
    public static Logger withTag(String tag) {
        return new Logger(tag);
    }
    private Logger(String TAG) {
        this.TAG = TAG;
        this.priority = Log.DEBUG; // This could be ERROR / INFO / VERBOSE
    }
    public Logger log(String message) {
        if (BuildConfig.DEBUG) {
            Log.println(priority, TAG, message);
        }
        return this;
    }
    public void withCause(Exception cause) {
        if (BuildConfig.DEBUG) {
            Log.println(priority, TAG, Log.getStackTraceString(cause));
        }
    }
}

初始化与使用

你可以使用下面的代码来初始化。将当前类的类名作为TAG:

private final Logger logger = logger.withTag(this.getClass().getSimpleName());

在try-catch语句块中打印异常:

try {
    // Something that can blow
} catch (Exception ex) {
    logger.log("Something went wrong with XYZ.").withCause(ex);
}