Android Studio Dolphin 新版Logcat 使用指南:告别混乱日志,高效定位问题

整理旧电脑上的一些笔记


前言

作为一名Android开发者,日志是我们最亲密的伙伴。笔者在今年9月以前频繁使用的Android Studio版本还是4.1.1,它发布于2020年11月。之所以还在坚持使用这么老的版本主要是由于笔者日常工作方向并非手机这类高性能移动端设备。

初识Dolphin版本Logcat

2022年9月Android发布了新版Android Studio------Dolphin(Android Studio Dolphin|2021.3.1(Sep 2022)),以下简称AS或Dolphin。

Android Studio的命名规则在2020开始,使用代号+版本号+发布月份的格式。如上面中"Dolphin"是代号,版本号2021.3.1是基于Intellij IDEA平台的版本,因为AS是基于Intellij IDEA进行的开发,Sep 2022是实际发布的日期。

Dolphin版本带来了全新的Logcat日志功能:新的UI界面,更加智能化,更高效(界面如下所示)。

Dolphin之前版本的Logcat日志采用文本流形式,可以提供一些基础功能,但各类信息混杂在一起输出,若日志量大时会很难定位问题,和我们在终端去执行adb logcat命令几乎一样,且会出现过滤失效、日志不打印输出。(界面如下所示)。

查看Dolphin版本Logcat

笔者当前使用的AS版本是Narwhal,它的默认Logcat界面如下:

新版Logcat默认置于左侧(点击切换到日志窗口。

每条日志都有相关日期、时间戳、进程和线程ID、标记(TAG)、包名、优先级和消息。通过上图我们可以看到标记TAG具有不同的颜色,可以更好帮助我们识别日志类型。

日志优先级

日志优先级和旧版相同:FATAL、ERROR、WARNING、INFO、DEBUG或VERBOSE。

🔴 提示 :

FATAL 实际上是 native 层崩溃(如 SIGSEGV)才会出现,Java 层崩溃通常为 ERROR + 堆栈。

日志换行设置

标准日志就是上面图中所示情况,每条日志在视图中保持一行,我们可以拖动下面的进度条查看更多信息,也可以使用Soft-Wrap来进行换行显示。

日志格式配置设置

点击 Configure Logcat Formatting Options 可以进行日志格式切换,它包括三个选项:

  • Standard View:标准视图,显示完整字段。
  • Compact View:紧凑视图,节省空间。
  • Modify View:自定义视图,勾选你需要显示的字段(如隐藏 PID/TID 或添加 UID)。

Modify View 选项可以打开新的弹窗来设置你希望显示的信息。

更改日志信息配色

想要更改日志信息配色,可以到Android Studio > Settings > Editor > Color Scheme。

  • info indicator:修改指示器颜色,I。
  • info message:修改日志"消息内容(正文)"颜色,文本颜色。

多个标签页和分屏

点击New Tab图标可以创建多个独立Logcat标签页,右键支持重命名和重新排列。每个标签页可以连接到不同的设备或运行不同的查询语言,极大的方便了同时监控多个应用和查看不同日志流。

可以在一个标签页内将窗口拆分为上下或左右的面板,每个面板都支持独立设置设备、过滤器信息和视图。例如左屏看主APP日志,右屏看Service日志或第三方SDK日志。取消分屏,右键点击Close即可。

使用Dolphin版本Logcat

在了解了新版日志界面都包括哪些按钮后,下面我们就来学习使用新的日志查询。

键值对搜索

新版的Logcat查询语法使用类似键值对的查询语言,支持如下方式(常用):

  • tag:MainActivity,筛选Tag为MainActivity的日志。
  • package:com.xxx.xxx,筛选包名匹配的日志。
  • process:xxxx,筛选进程匹配的日志。
  • level:debug,与指定级别或更高级别的日志匹配。
  • message:主页,筛选消息正文内容包含"主页"的日志。
  • age:5m,筛选时间戳最近的日志,这里是过去5分钟内的日志。s代表秒,m代表分钟,h代表小时,d代表天。

Ctrl+Space,可以查看查询列表。

正则表达式

查询框支持正则表达式来进行过滤搜索。

支持否定的字段有:tag、package、message和line,否定使用"-"。例如:-tag:MainActivity。

正则表达式匹配通过在字段名后加"",例如:tag:.*Exception$,匹配以"Exception"结尾的任何Tag。

可以结合使用:-tag~:My.*Tag。

逻辑运算符和隐式逻辑运算符

查询语言支持由 & 和 | 以及圆括号表示的 AND 和 OR 运算符。

(tag:foo | level:ERROR) & package:mine

上面的就是很明显的使用了逻辑运算符,我们还可以考虑使用隐式结构。先看示例:

复制代码
tag:foo tag:bar package:myapp

两个key=tag的项和一个key=package的项,它就等于:

shell 复制代码
(tag:foo | tag:bar) & package:myapp

总结就是:具有相同key的多个非否定key-value过滤器项视作OR,其他过滤项视作AND。

特殊查询

内置了部分特殊语句查询:

  • package:mine,匹配当前打开项目中的任何包名。
  • is:crash,匹配应用崩溃日志。
  • is:stacktrace,匹配任何类似 Java 堆栈跟踪的日志条目。
  • age:5m,条目的时间戳进行匹配。

其他

  • APP Quality Insights工具,展示来自 Firebase Crashlytics 的崩溃数据。
  • 查看查询历史记录,点击查看历史记录。
  • 应用崩溃和重启,当 Logcat 发现您的应用进程已停止并重启时,会在输出中显示一条消息PROCESS ENDED或PROCESS STARTED。

结语

如果你还在使用 Android Studio 4.x 或手动 adb logcat 查看日志,强烈建议升级至 Android Studio Giraffe、Hedgehog 或更高版本,全面体验新版 Logcat 带来的开发效率飞跃。

参考资料

相关推荐
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc5 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo5 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077005 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone5 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen5 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone5 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui