Okloong的博客

先做出来了,再探索,在探索过程中完成知识的系统化

带TargetStackTraceElement的log工具类

系统的log日记能看出不少信息,但是系统自带log并不是那么好用。比如说你不调试想关掉调试,你要一条条删除,调试时候log信息在第几行也不好看出。既然如此为什么不自己制作一个能实现自己需要的log系统呢?接下来将要实现的是带TargetStackTraceElement的log工具类,制作自己个性化的log日记系统。

下面是logUtil代码:

import android.util.Log;


public class LogUtil {
public static void v(String tag, String msg) {
	if (!Const.isVerbose)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.v(tag, getTAG(targetStackTraceElement));
		Log.v(tag, msg);


	}


	public static void v(String tag, String msg, Throwable tr) {
		if (!Const.isVerbose)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.v(tag, getTAG(targetStackTraceElement));
		Log.v(tag, msg, tr);


	}


	public static void d(String tag, String msg) {
		if (!Const.isDebug)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.d(tag, getTAG(targetStackTraceElement));
		Log.d(tag, msg);


	}


	public static void d(String tag, String msg, Throwable tr) {
		if (!Const.isDebug)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.d(tag, getTAG(targetStackTraceElement));
		Log.d(tag, msg, tr);


	}


	public static void i(String tag, String msg) {
		if (!Const.isInformation)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.i(tag, getTAG(targetStackTraceElement));
		Log.i(tag, msg);


	}


	public static void i(String tag, String msg, Throwable tr) {
		if (!Const.isInformation)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.i(tag, getTAG(targetStackTraceElement));
		Log.i(tag, msg, tr);


	}


	public static void w(String tag, String msg) {
		if (!Const.isWarning)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.w(tag, getTAG(targetStackTraceElement));
		Log.w(tag, msg);


	}


	public static void w(String tag, String msg, Throwable tr) {
		if (!Const.isWarning)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.w(tag, getTAG(targetStackTraceElement));
		Log.w(tag, msg, tr);


	}


	public static void e(String tag, String msg) {
		if (!Const.isError)
			return;
		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.e(tag, getTAG(targetStackTraceElement));
		Log.e(tag, msg);


	}


	public static void e(String tag, String msg, Throwable tr) {
		if (!Const.isError)
			return;


		StackTraceElement targetStackTraceElement = getTargetStackTraceElement();
		Log.e(tag, getTAG(targetStackTraceElement));
		Log.e(tag, msg, tr);


	}


	private static String getTAG(StackTraceElement targetStackTraceElement) {
		return targetStackTraceElement.getClassName() + "." + targetStackTraceElement.getMethodName() + "("
				+ targetStackTraceElement.getFileName() + ":" + targetStackTraceElement.getLineNumber() + ")";
	}


	private static StackTraceElement getTargetStackTraceElement() {
		StackTraceElement targetStackTrace = null;
		boolean shouldTrace = false;
		StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
		for (StackTraceElement stackTraceElement : stackTrace) {
			boolean isLogMethod = stackTraceElement.getClassName().equals(LogUtil.class.getName());
			if (shouldTrace && !isLogMethod) {
				targetStackTrace = stackTraceElement;
				break;
			}
			shouldTrace = isLogMethod;
		}
		return targetStackTrace;
	}
}

这里面的TargetStackTraceElement是要实现显示代码行,包名字,文件名等。在另外一个Const类里面实现开关调试功能。

public class Const {

	//LogUtil
	public static boolean isDebug = true; //Debug调试
	public static boolean isVerbose = true; //任何消息
	public static boolean isInformation = true; //提示性的消息
	public static boolean isWarning = true; //警告信息
	public static boolean isError = true; //错误信息
}

 代码调用:

LogUtil.d("info", "1234567");

显示效果如下:

info   com.example.Reader.Date(Reader.java:207)
info   1234567
当然了,如果你对这个显示效果不满意,也可以根据自己需要改写。






阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loongago/article/details/52527705
个人分类: Android
想对作者说点什么? 我来说一句

log工具类便于使用

2018年02月05日 11KB 下载

LogUtil.java

2017年06月26日 2KB 下载

开源的log日志工具类

2016年11月14日 20.63MB 下载

Log封装源码

2017年04月25日 19.45MB 下载

没有更多推荐了,返回首页

不良信息举报

带TargetStackTraceElement的log工具类

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭