標籤:
public class LogUtils { private static final boolean VERBOSE = true; private static final boolean DEBUG = true; private static final boolean INFO = true; private static final boolean WARN = true; private static final boolean ERROR = true; private static final String SEPARATOR = ","; public static void v(String message) { if (VERBOSE) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.v(tag, getLogInfo(stackTraceElement) + message); } } public static void v(String tag, String message) { if (VERBOSE) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.v(tag, getLogInfo(stackTraceElement) + message); } } public static void d(String message) { if (DEBUG) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.d(tag, getLogInfo(stackTraceElement) + message); } } public static void d(String tag, String message) { if (DEBUG) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.d(tag, getLogInfo(stackTraceElement) + message); } } public static void i(String message) { if (INFO) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.i(tag, message); } } public static void i(String tag, String message) { if (INFO) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.i(tag, getLogInfo(stackTraceElement) + message); } } public static void w(String message) { if (WARN) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.w(tag, getLogInfo(stackTraceElement) + message); } } public static void w(String tag, String message) { if (WARN) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.w(tag, getLogInfo(stackTraceElement) + message); } } public static void e(String message) { if (ERROR) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.e(tag, message); } } public static void e(String tag, String message) { if (ERROR) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.e(tag, getLogInfo(stackTraceElement) + message); } } /** * 擷取預設的TAG名稱. 比如在MainActivity.java中調用了日誌輸出. 則TAG為MainActivity */ public static String getDefaultTag(StackTraceElement stackTraceElement) { String fileName = stackTraceElement.getFileName(); String stringArray[] = fileName.split("\\."); String tag = stringArray[0]; return tag; } /** * 輸出日誌所包含的資訊 */ public static String getLogInfo(StackTraceElement stackTraceElement) { StringBuilder logInfoStringBuilder = new StringBuilder(); // 擷取線程名 String threadName = Thread.currentThread().getName(); // 擷取線程ID long threadID = Thread.currentThread().getId(); // 擷取檔案名稱.即xxx.java String fileName = stackTraceElement.getFileName(); // 擷取類名.即包名+類名 String className = stackTraceElement.getClassName(); // 擷取方法名稱 String methodName = stackTraceElement.getMethodName(); // 擷取生日輸出行數 int lineNumber = stackTraceElement.getLineNumber(); logInfoStringBuilder.append("[ "); logInfoStringBuilder.append("threadID=" + threadID).append(SEPARATOR); logInfoStringBuilder.append("threadName=" + threadName).append(SEPARATOR); logInfoStringBuilder.append("fileName=" + fileName).append(SEPARATOR); logInfoStringBuilder.append("className=" + className).append(SEPARATOR); logInfoStringBuilder.append("methodName=" + methodName).append(SEPARATOR); logInfoStringBuilder.append("lineNumber=" + lineNumber); logInfoStringBuilder.append(" ] "); return logInfoStringBuilder.toString(); }}
Android 定義全域LOG列印日誌,並顯示調用者相關資訊