/**
* 日志输出工具类
*/
public class L {
private static final String TAG = "LOGFILE";
private L() {
// 设置不允许被实例化
throw new UnsupportedOperationException("cannot be instantiated");
}
private static boolean isDebug;// 是否需要打印bug,可以在application的onCreate函数里面初始化
public static void setIsDebug(boolean isDebug) {
L.isDebug = isDebug;
}
// 下面四个是默认tag的函数
public static void i(String msg) {
i(TAG, msg);
}
public static void d(String msg) {
d(TAG, msg);
}
public static void e(String msg) {
e(TAG, msg);
}
public static void v(String msg) {
v(TAG, msg);
}
// 下面是传入自定义tag的函数
public static void i(String tag, String msg) {
if (isDebug) {
Log.i(tag, msg);
}
}
public static void d(String tag, String msg) {
if (isDebug) {
Log.d(tag, msg);
}
}
public static void e(String tag, String msg) {
if (isDebug) {
Log.e(tag, msg);
}
}
public static void v(String tag, String msg) {
if (isDebug) {
Log.v(tag, msg);
}
}
}
工具类默认是屏蔽日志打印的,然后我们在 Application 的 onCreate 里根据当前是否为 deBug 去初始化 isDebug 的值
private void initLog() {
if (isApkInDebug()) {
L.setIsDebug(true);
}
}
/**
* 判断当前应用是否是debug状态
* @return
*/
public static boolean isApkInDebug() {
try {
ApplicationInfo info = mContext.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
return false;
}
}
之前的日志输出工具类没有判断是否为 deBug,然后每次发包之前都手动的把 isDebug 设置为 false,毫无疑问,有几次都忘记了,然后出现 release 包依然打印日志信息的情况。
网友评论