自定义一个只在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);
}