【No10.】一个超便捷的Log工具类

没废话,上代码:

 

package com.example.logutils;

import android.text.TextUtils;
import android.util.Log;

/**
 * Log工具,类似android.util.Log。 tag自动产生,格式:
 * customTagPrefix:className.methodName(L:lineNumber),
 * customTagPrefix为空时只输出:className.methodName(L:lineNumber) Author: Simon
 */
public class LogUtils {

	public static String customTagPrefix = "";// 自定义标记前缀

	private LogUtils() {
	}

	public static boolean debug = true;// log总开关

	public static boolean allowD = true;
	public static boolean allowE = true;
	public static boolean allowI = true;
	public static boolean allowV = true;
	public static boolean allowW = true;
	public static boolean allowWtf = true;

	private static String generateTag(StackTraceElement caller) {
		String tag = "%s.%s(L:%d)";
		String callerClazzName = caller.getClassName();
		callerClazzName = callerClazzName.substring(callerClazzName
				.lastIndexOf(".") + 1);
		tag = String.format(tag, callerClazzName, caller.getMethodName(),
				caller.getLineNumber());
		tag = TextUtils.isEmpty(customTagPrefix) ? tag : customTagPrefix + ":"
				+ tag;
		return tag;
	}

	public static CustomLogger customLogger;

	public interface CustomLogger {
		void d(String tag, String content);

		void d(String tag, String content, Throwable tr);

		void e(String tag, String content);

		void e(String tag, String content, Throwable tr);

		void i(String tag, String content);

		void i(String tag, String content, Throwable tr);

		void v(String tag, String content);

		void v(String tag, String content, Throwable tr);

		void w(String tag, String content);

		void w(String tag, String content, Throwable tr);

		void w(String tag, Throwable tr);

		void wtf(String tag, String content);

		void wtf(String tag, String content, Throwable tr);

		void wtf(String tag, Throwable tr);
	}

	public static void d(String content) {
		if (debug) {
			if (!allowD)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.d(tag, content);
			} else {
				Log.d(tag, content);
			}
		}
	}

	public static void d(String content, Throwable tr) {
		if (debug) {
			if (!allowD)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.d(tag, content, tr);
			} else {
				Log.d(tag, content, tr);
			}
		}
	}

	public static void e(String content) {
		if (debug) {
			if (!allowE)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.e(tag, content);
			} else {
				Log.e(tag, content);
			}
		}
	}

	public static void e(String content, Throwable tr) {
		if (debug) {
			if (!allowE)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.e(tag, content, tr);
			} else {
				Log.e(tag, content, tr);
			}
		}
	}

	public static void i(String content) {
		if (debug) {
			if (!allowI)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.i(tag, content);
			} else {
				Log.i(tag, content);
			}
		}
	}

	public static void i(String content, Throwable tr) {
		if (debug) {
			if (!allowI)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.i(tag, content, tr);
			} else {
				Log.i(tag, content, tr);
			}
		}
	}

	public static void v(String content) {
		if (debug) {
			if (!allowV)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.v(tag, content);
			} else {
				Log.v(tag, content);
			}
		}
	}

	public static void v(String content, Throwable tr) {
		if (debug) {
			if (!allowV)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.v(tag, content, tr);
			} else {
				Log.v(tag, content, tr);
			}
		}
	}

	public static void w(String content) {
		if (debug) {
			if (!allowW)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.w(tag, content);
			} else {
				Log.w(tag, content);
			}
		}
	}

	public static void w(String content, Throwable tr) {
		if (debug) {
			if (!allowW)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.w(tag, content, tr);
			} else {
				Log.w(tag, content, tr);
			}
		}
	}

	public static void w(Throwable tr) {
		if (debug) {
			if (!allowW)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.w(tag, tr);
			} else {
				Log.w(tag, tr);
			}
		}
	}

	public static void wtf(String content) {
		if (debug) {
			if (!allowWtf)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.wtf(tag, content);
			} else {
				Log.wtf(tag, content);
			}
		}
	}

	public static void wtf(String content, Throwable tr) {
		if (debug) {
			if (!allowWtf)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.wtf(tag, content, tr);
			} else {
				Log.wtf(tag, content, tr);
			}
		}
	}

	public static void wtf(Throwable tr) {
		if (debug) {
			if (!allowWtf)
				return;
			StackTraceElement caller = getCallerStackTraceElement();
			String tag = generateTag(caller);

			if (customLogger != null) {
				customLogger.wtf(tag, tr);
			} else {
				Log.wtf(tag, tr);
			}
		}
	}

	public static StackTraceElement getCurrentStackTraceElement() {
		return Thread.currentThread().getStackTrace()[3];
	}

	public static StackTraceElement getCallerStackTraceElement() {
		return Thread.currentThread().getStackTrace()[4];
	}

}


下面贴用法:

 

package com.example.logutils;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//LogUtils.customTagPrefix = "Simon";//设定TAG  可选
		
		LogUtils.d("1");

	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		LogUtils.i("2");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		LogUtils.e("3");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		LogUtils.v("4");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		LogUtils.w("5");
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		LogUtils.wtf("6");
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		LogUtils.w("7");
	}

}

 

效果图:

 

这个是不设置TAG的

 

这个是设置TAG的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值