不管是Android开发还是java开发,Log日志一直是很重要的辅助调试工具,日志只能用来看吗?当然不是,还能用来导航跳转。
友情提示:本文只提供提高逼格方法方式,基础知识请自行学习。不要问我原理,工具就是那么设计的CSDN中文章作者hnsugar是我,发了多个地方。
。
不知道大家会不会利用java提供的StackTraceElement,利用这个可以打印堆栈信息,不知道请自行查阅相关文档。可以获取类名方法名和行号等等。 Android 的logcat日志打印error时是可以点击跳转的,为什么呢?因为用小括号包起来了,里面还有行号,用分号隔开(全是英文符号) 废话不多说,上栗子:
(废话)。
看源码拼接,当然了我只是举个栗子,大家信息拼接复杂请用Stringbuilder。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logd(TAG, "onCreate: ");
}
public static void logd(String tag, String msg) {
StackTraceElement[] traceElements = Thread.currentThread().getStackTrace();
StackTraceElement element = traceElements[3];
Log.d(tag, "(" + element.getFileName() + ":" + element.getLineNumber() + "):>>> " + msg);
}</pre>
好了,哪里调用这个方法就会打印对应位置的信息,至于为什么是获取堆栈信息中的第四个对象(数组中的3),因为第四个是我想知道的对应调用位置,大家debug看看数组结构(小白请认真学习),有一个方法调用层级关系。方法调用层级越多获取的对应位置越深,请大家自行学习相关知识。