[Android]Log打印

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);
	}
	
}
posted @ 2013-10-27 15:10  Cyning  阅读(447)  评论(0编辑  收藏  举报