Android中一般测试进行log的展示,而正式版本App则要将Log关闭(为了上线版本App的性能考虑)。所以就需要统一管理Log信息,进行简单的封装,封装完成后只需要更改一个boolean 值就可以完成此操作。请看案例:
import android.util.Log;
/**
* log打印工具类
*/
public class LogUtil {
private LogUtil() {
/* cannot be instantiated */
throw new UnsupportedOperationException("cannot be instantiated");
}
public static boolean isDebug;// 是否需要打印bug,在application的onCreate函数里面初始化
private static final String TAG = "tag";
// 下面四个是默认tag的函数
public static void i(String msg) {
if (isDebug)
Log.i(TAG, msg);
}
public static void d(String msg) {
if (isDebug)
Log.d(TAG, msg);
}
public static void e(String msg) {
if (isDebug)
Log.e(TAG, msg);
}
public static void v(String msg) {
if (isDebug)
Log.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.i(tag, msg);
}
public static void e(String tag, String msg) {
if (isDebug)
Log.i(tag, msg);
}
public static void v(String tag, String msg) {
if (isDebug)
Log.i(tag, msg);
}
/**
* 截断输出日志
*
* @param msg
*/
public static void eLength(String tag, String msg) {
if (isDebug) {
if (tag == null || tag.length() == 0
|| msg == null || msg.length() == 0)
return;
int segmentSize = 3 * 1024;
long length = msg.length();
if (length <= segmentSize) {// 长度小于等于限制直接打印
Log.e(tag, msg);
} else {
while (msg.length() > segmentSize) {// 循环分段打印日志
String logContent = msg.substring(0, segmentSize);
msg = msg.replace(logContent, "");
Log.e(tag, logContent);
}
Log.e(tag, msg);// 打印剩余日志
}
}
}
}
在自定义Application进行初始化和判断是否进行Log打印操作:
import android.app.Application;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//用于判断log值是否打印
LogUtil.isDebug = true;
}
}
设置LogUtil.isDebug 为true时则进行Log打印操作,反之则不打印Log操作。注意在自定义application时,记得进行配置文件进行配置: