##?實現(xiàn)超好用的Log打印功能 ##
### 說明:
1.在LogUtlis方法的第一個參數(shù)中填this可以輸出當前類的名稱粉楚,特別是在匿名內(nèi)部類使用也可以輸出當前類名.
2.結(jié)合logcat的篩選功能,可以實現(xiàn)只看某個級別的log日志.
[ 只想看info級別的日志? 就可以使mDebuggable=3,Log輸出控制臺調(diào)到info級別篩選 ]
### 使用步驟:
1.拷貝LogUtils類到項目中
2.自定義快捷鍵,如: LogUtils.i(this, "$msg$");
### 代碼截圖:
### 全部的代碼如下:
public class LogUtils {
? /**
* @desc 允許輸出log的級別(0代表不輸出, 5代表輸出所有的日志; 1就是輸出v, 2就是輸出v和d, 3就是輸出v, d, i ...)
*/
private static int mDebuggable = 5;
/**
* 日志輸出級別V
*/
public static final int LEVEL_VERBOSE = 1;
/**
* 日志輸出級別D
*/
public static final int LEVEL_DEBUG???= 2;
/**
* 日志輸出級別I
*/
public static final int LEVEL_INFO????= 3;
/**
* 日志輸出級別W
*/
public static final int LEVEL_WARN????= 4;
/**
* 日志輸出級別E
*/
public static final int LEVEL_ERROR???= 5;
/**---------------日志輸出, begin---------------**/
/**
* 以級別為 v 的形式輸出LOG
*/
public static void v(Object objTag, String msg) {
if (mDebuggable >= LEVEL_VERBOSE) {
String tag;
// 如果objTag是String伶贰,則直接使用;如果objTag不是String吊趾,則使用它的類名
if (objTag instanceof String) {
tag = (String) objTag;
} else if (objTag instanceof Class) {
tag = ((Class) objTag).getSimpleName();
} else {
//處理在匿名內(nèi)部類中寫this顯示不出類名的問題
tag = objTag.getClass().getName();
String[] split = tag.split("\\.");
tag = split[split.length - 1].split("\\$")[0];
}
if (TextUtils.isEmpty(tag)) {//處理當objTag為null的情況
tag = "該Tag為空";
}
if (TextUtils.isEmpty(msg)) {
Log.v(tag, "該log輸出信息為空");
} else {
Log.v(tag, msg);
}
}
}
/**
* 以級別為 d 的形式輸出LOG
*/
public static void d(Object objTag, String msg) {
if (mDebuggable >= LEVEL_DEBUG) {
String tag;
// 如果objTag是String举户,則直接使用;如果objTag不是String蓬豁,則使用它的類名
if (objTag instanceof String) {
tag = (String) objTag;
} else if (objTag instanceof Class) {
tag = ((Class) objTag).getSimpleName();
} else {
//處理在匿名內(nèi)部類中寫this顯示不出類名的問題
tag = objTag.getClass().getName();
String[] split = tag.split("\\.");
tag = split[split.length - 1].split("\\$")[0];
}
if (TextUtils.isEmpty(tag)) {
tag = "該Tag為空";
}
if (TextUtils.isEmpty(msg)) {
Log.d(tag, "該log輸出信息為空");
} else {
Log.d(tag, msg);
}
}
}
/**
* 以級別為 i 的形式輸出LOG
*/
public static void i(Object objTag, String msg) {
if (mDebuggable >= LEVEL_INFO) {
String tag;
// 如果objTag是String陵珍,則直接使用
// 如果objTag不是String非竿,則使用它的類名
if (objTag instanceof String) {
tag = (String) objTag;
} else if (objTag instanceof Class) {
tag = ((Class) objTag).getSimpleName();
} else {
tag = objTag.getClass().getName();
String[] split = tag.split("\\.");
tag = split[split.length - 1].split("\\$")[0];
}
if (TextUtils.isEmpty(tag)) {
tag = "該Tag為空";
}
if (TextUtils.isEmpty(msg)) {
Log.i(tag, "該log輸出信息為空");
} else {
Log.i(tag, msg);
}
}
}
/**
* 以級別為 w 的形式輸出LOG
*/
public static void w(Object objTag, String msg) {
if (mDebuggable >= LEVEL_WARN) {
String tag;
// 如果objTag是String,則直接使用
// 如果objTag不是String酬凳,則使用它的類名
if (objTag instanceof String) {
tag = (String) objTag;
} else if (objTag instanceof Class) {
tag = ((Class) objTag).getSimpleName();
} else {
tag = objTag.getClass().getName();
String[] split = tag.split("\\.");
tag = split[split.length - 1].split("\\$")[0];
}
if (TextUtils.isEmpty(tag)) {
tag = "該Tag為空";
}
if (TextUtils.isEmpty(msg)) {
Log.w(tag, "該log輸出信息為空");
} else {
Log.w(tag, msg);
}
}
}
/**
* 以級別為 e 的形式輸出LOG
*/
public static void e(Object objTag, String msg) {
if (mDebuggable >= LEVEL_ERROR) {
String tag;
// 如果objTag是String惠况,則直接使用
// 如果objTag不是String,則使用它的類名
if (objTag instanceof String) {
tag = (String) objTag;
} else if (objTag instanceof Class) {
tag = ((Class) objTag).getSimpleName();
} else {
tag = objTag.getClass().getName();
String[] split = tag.split("\\.");
tag = split[split.length - 1].split("\\$")[0];
}
if (TextUtils.isEmpty(tag)) {
tag = "該Tag為空";
}
if (TextUtils.isEmpty(msg)) {
Log.e(tag, "該log輸出信息為空");
} else {
Log.e(tag, msg);
}
}
}
/**---------------日志輸出, end---------------**/
}