安卓手机怎么查找去过的位置(Android日志支持点击跳转定位原来如此简单)

我们在做开发编码时,难免会打印一些日志来分析,通常用Android的Log打印日志时,只有基本的日志信息,效果如下图 日志包含以下基本信息日期和时间:如上图中的2021-12-18 23:13:48.386,时...

我们在做开发编码时,难免会打印一些日志来分析,通常用Android的Log打印日志时,只有基本的日志信息,效果如下图

Android日志支持点击跳转定位原来如此简单

日志包含以下基本信息

日期和时间:如上图中的2021-12-18 23:13:48.386,时间精确到毫秒进程和线程:如上图中的进程id是3800,线程id是3800包名:如上图中的com.aloe.demo01日志级别:如上图中的D代码debug级别,可以根据级别进行过虑,级别分为Verbose,Debug,Info,Warn,Error和Assert,级别依次从小到大日志标签:如上图中的aloe,可以根据这个标签进行过滤日志信息:如上图中的你好,龙儿筝!

从以上信息可以发现日志信息还是挺全面的,包含的信息也很多,对我们的开发,分析,找问题都是十分的有帮助。尽管信息很全面,但有一个致命的缺陷,就是日志没有定位功能,不知道这条日志是哪个地方打印的,也不支持跳转,当日志信息很多的时候,这对于我们查找是极不方便的。我们可以针对日志定位功能,写一个工具类,代码如下

private const val stackTraceLength = 4fun String?.log(type: Int = Log.DEBUG, tag: String = "aloe") { if (!BuildConfig.DEBUG || this == null) return val element = Thread.currentThread().stackTrace[stackTraceLength] val txt = "${element.methodName}(${element.fileName}:${element.lineNumber}) $this" when (type) { Log.DEBUG -> Log.d(tag, txt) Log.INFO -> Log.i(tag, txt) Log.WARN -> Log.w(tag, txt) Log.ERROR -> Log.e(tag, txt) else -> {} }}

一个方法轻松搞定,stackTraceLength是定义调用栈的深度,不同的封装,这个值可能不一定,大家根据自己的风格来确定。

第一行判断非调试环境或日志内容为空,则不打印第二行是获取当前线程方法调用栈,取第stackTraceLength个第三行是拿到栈信息获取方法名,所在的类名以及行号后面根据日志级别打印不同的日志

最终效果如下

Android日志支持点击跳转定位原来如此简单

一个支持点击跳转的日志功能就完成了,是不是非常简单,再也不用依赖第三方框架了,自己动手,丰衣足食。

  • 发表于 2022-10-25 18:27:27
  • 阅读 ( 160 )
  • 分类:科技

0 条评论

请先 登录 后评论
央视新闻
央视新闻

491 篇文章

你可能感兴趣的文章

相关问题