package com.lisn.ds_test;
import android.util.Log;
/**
* liShan
*/
public class MyLogger {
private static final String TAG = "MyLogger";
public static boolean DEBUG = true;
public static void V(String info) {
if (DEBUG) {
String[] infos = getAutoJumpLogInfos();
Log.v(TAG, info + " : " + infos[1] + infos[2]);
}
}
public static void D(String info) {
if (DEBUG) {
String[] infos = getAutoJumpLogInfos();
Log.v(TAG, info + " : " + infos[1] + infos[2]);
}
}
public static void I(String info) {
if (DEBUG) {
String[] infos = getAutoJumpLogInfos();
Log.v(TAG, info + " : " + infos[1] + infos[2]);
}
}
public static void W(String info) {
if (DEBUG) {
String[] infos = getAutoJumpLogInfos();
Log.v(TAG, info + " : " + infos[1] + infos[2]);
}
}
public static void E(String info) {
if (DEBUG) {
String[] infos = getAutoJumpLogInfos();
Log.v(TAG, info + " : " + infos[1] + infos[2]);
}
}
/**
* 显示Log信息(带行号)
*
* @param logLevel 1 v ; 2 d ; 3 i ; 4 w ; 5 e .
* @param info 显示的log信息
*/
public static void showLogWithLineNum(int logLevel, String info) {
String[] infos = getAutoJumpLogInfos();
switch (logLevel) {
case 1:
if (DEBUG)
Log.v(infos[0], info + " : " + infos[1] + infos[2]);
break;
case 2:
if (DEBUG)
Log.d(infos[0], info + " : " + infos[1] + infos[2]);
break;
case 3:
if (DEBUG)
Log.i(infos[0], info + " : " + infos[1] + infos[2]);
break;
case 4:
if (DEBUG)
Log.w(infos[0], info + " : " + infos[1] + infos[2]);
break;
case 5:
if (DEBUG)
Log.e(infos[0], info + " : " + infos[1] + infos[2]);
break;
}
}
/**
* 获取打印信息所在方法名,行号等信息
*
* @return
*/
private static String[] getAutoJumpLogInfos() {
String[] infos = new String[]{"", "", ""};
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 5) {
Log.e("MyLogger", "Stack is too shallow!!!");
return infos;
} else {
infos[0] = elements[4].getClassName().substring(
elements[4].getClassName().lastIndexOf(".") + 1);
infos[1] = elements[4].getMethodName() + "()";
infos[2] = " at (" + elements[4].getClassName() + ".java:"
+ elements[4].getLineNumber() + ")";
return infos;
}
}
}Android的log工具类(显示类名、方法名、行号)
最新推荐文章于 2023-12-12 10:57:57 发布
本文介绍了一个自定义的日志记录器实现,该记录器能够根据不同的日志级别记录信息,并且可以自动获取调用方法的名称及行号,便于追踪问题。提供了多种日志级别的方法,如V(Verbose)、D(Debug)、I(Info)、W(Warn)、E(Error),并实现了按行号显示日志的功能。
&spm=1001.2101.3001.5002&articleId=53320550&d=1&t=3&u=33f2855e847043f58fa7360a1baae14a)
8036

被折叠的 条评论
为什么被折叠?



