使用StackTraceElement(堆栈轨迹)获取到类名,方法名,日志行数。
将日志方法参数设为可变参数,使用时免去来回拼接并且可接收任何参数。
使用时,直接用"{}"占位,后跟实参。
打印结果:
贴出整个工具类代码:
package com.zhuotop.logutils; import android.util.Log; import java.util.Locale; public class LogUtils { private static final String TAG = "Demo"; public static <T> void info(String msg, T... t) { String content = msg.replaceAll("%%", "%"); String info = getTrackInfo() + content.replaceAll("\\{\\}", "%s"); Log.i(TAG, String.format(Locale.ROOT, info, t)); } private static String getTrackInfo() { StackTraceElement stackTrace = new Throwable().getStackTrace()[2]; String className = stackTrace.getClassName(); String simlpeName = className.substring(className.lastIndexOf(".") + 1); String methodName = stackTrace.getMethodName(); int lineNumber = stackTrace.getLineNumber(); return String.format(Locale.ROOT, "[%s:%s %d]", simlpeName, methodName, lineNumber); } }