package com.lurencun.android.system; import android.util.Log; public class ExLog { static final String TAG = ExLog.class.getSimpleName(); /** * 输出调试信息(System.out),并在调试输入信息中附带当前代码在哪个类哪一行的额外数据。 * @param message 调试信息 */ public static void l(String message){ StackTraceElement ele = Thread.currentThread().getStackTrace()[3]; int line = ele.getLineNumber(); String clazz = ele.getClassName(); System.out.println(":::: @"+clazz+" -> "+line+" :::: "+message); } /** * 取得当前代码所在的方法名 * @return 当前方法名 */ public static String getCurrentMethodName(){ // 0 getThreadStackTrce // 1 getStackTrace // 2 * this method: getCurrentMethodName // 3 your method return Thread.currentThread().getStackTrace()[3].getMethodName(); } /** * 输出方法调用链 * @param object 对象 */ public static void logCurrentMethodChain(Object object){ StackTraceElement[] es = Thread.currentThread().getStackTrace(); long time = System.currentTimeMillis(); Log.d(TAG, String.format("###### Object(%s) Method Chain ###### @Time( %d )", object.getClass().getSimpleName(), time)); for(StackTraceElement e : es){ String msg = String.format("### Method Chain ### Caller:%s ->:%s", e.getClassName(),e.getMethodName()); Log.d(TAG, msg); } } /** * 输出当前方法调用 * @param object 对象 */ public static void logCurrentMethod(Object object){ String methodName = Thread.currentThread().getStackTrace()[3].getMethodName(); long time = System.currentTimeMillis(); String msg = String.format("###### Calling Method ###### Object(%s) -> %s @Time( %d )", object.getClass().getSimpleName(),methodName, time); Log.d(TAG, msg); } }