###1.前言
在平常的Android开发中,为了方便解决bug,优化代码性能,会在代码中合理的输出log,以此来测试代码的执行过程。
为了更好的管理log,并便于分析代码,我们需要将log进行统一管理。
###2.Log工具类
(1)LogUtil.java :
package com.zy.car.utilslibrary.logutil;
import android.util.Log;
public class AppLog {
private static final String TAG = "AppLog";
private static final boolean FORCE_LOGGING = true;
private static final boolean DEBUG = isLoggable(3);
private static final boolean INFO = isLoggable(4);
private static final boolean VERBOSE = isLoggable(2);
private static final boolean WARN = isLoggable(5);
private static final boolean ERROR = isLoggable(6);
public static void debug(String prefix, String msg) {
if (DEBUG) {
Log.d("AppLog", prefix + ": " + msg);
}
}
public static void debug(Object objectPrefix, String msg) {
if (DEBUG) {
Log.d("AppLog", getPrefixFromObject(objectPrefix) + ": " + msg);
}
}
public static void info(String prefix, String msg) {
if (INFO) {
Log.i("AppLog", prefix + ": " + msg);
}
}
public static void info(Object objectPrefix, String msg) {
if (INFO) {
Log.i("AppLog", getPrefixFromObject(objectPrefix) + ": " + msg);
}
}
public static void verbose(String prefix, String msg) {
if (VERBOSE) {
Log.v("AppLog", prefix + ": " + msg);
}
}
public static void verbose(Object objectPrefix, String msg) {
if (VERBOSE) {
Log.v("AppLog", getPrefixFromObject(objectPrefix) + ": " + msg);
}
}
public static void warn(String prefix, String msg) {
if (WARN) {
Log.w("AppLog", prefix + ": " + msg);
}
}
public static void warn(Object objectPrefix, String msg) {
if (WARN) {
Log.w("AppLog", getPrefixFromObject(objectPrefix) + ": " + msg);
}
}
public static void error(String prefix, String msg) {
if (ERROR) {
Log.e("AppLog", prefix + ": " + msg);
}
}
public static void error(Object objectPrefix, String msg) {
if (ERROR) {
Log.e("AppLog", getPrefixFromObject(objectPrefix) + ": " + msg);
}
}
private AppLog() {
}
private static boolean isLoggable(int level) {
return true;
}
private static String getPrefixFromObject(Object obj) {
return obj == null ? "<null>" : obj.getClass().getSimpleName();
}
}
(2)通过log输出堆栈信息
//输出代码具体的调用
Log.d(TAG, Log.getStackTraceString(new Throwable()));
//获取当前线程的堆栈
for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
Log.i(TAG, i.toString());
}