9、Logcat 颜色与格式:让日志输出更易读的实用技巧
说实话,刚入行那会儿,我对着满屏黑白日志一盯就是半天。眼睛累不说,关键信息还老找不着。后来我琢磨出一套颜色和格式的配置方案,工作效率直接翻倍。今天就把这些压箱底的技巧分享给你。
9.1 为什么默认日志不够用?
默认的 Logcat 输出,说白了就是白底黑字(或者黑底白字)。所有日志混在一起,你根本分不清哪个是 Error,哪个是 Debug。我见过不少新手,排查问题全靠肉眼扫描——这效率太低了。
你想想看,如果能把 Error 标红、Warning 标黄、Info 标绿,是不是一眼就能定位问题?这就是颜色配置的价值所在。
核心思路:通过颜色区分日志等级,通过格式提取关键信息。两者结合,让日志变成你的「可视化调试工具」。
9.2 颜色配置:让日志「说话」
Android Studio 的 Logcat 支持自定义颜色。我个人习惯用这套配色方案:
| 日志等级 | 颜色 | 说明 |
|---|---|---|
| VERBOSE | 灰色 (#888888) | 低优先级,通常忽略 |
| DEBUG | 蓝色 (#2196F3) | 调试信息,开发时关注 |
| INFO | 绿色 (#4CAF50) | 正常流程信息 |
| WARNING | 橙色 (#FF9800) | 警告,需要留意 |
| ERROR | 红色 (#F44336) | 错误,必须处理 |
| ASSERT | 深红 (#B71C1C) | 断言失败,严重问题 |
配置方法很简单:Settings → Editor → Color Scheme → Android Logcat。选中对应等级,直接改颜色值就行。
小技巧:我建议把 ERROR 和 ASSERT 的颜色调得刺眼一点。这样即使日志刷得飞快,你也能一眼捕捉到异常。
9.3 格式定制:只提取你关心的
颜色解决了「看得清」的问题,格式解决的是「看得懂」的问题。默认的日志格式包含时间、PID、TID、包名、等级、标签、消息。说实话,信息太多了,反而干扰判断。
我常用的格式模板是这样的:
%d{HH:mm:ss.SSS} [%t] %-5level %msg%n
这个格式只保留:
- 时间(精确到毫秒)
- 线程名(用方括号括起来)
- 日志等级(左对齐,固定5字符宽度)
- 消息内容
为什么去掉包名和PID?因为我在调试时,通常只关注某个模块的日志。包名可以通过过滤器解决,没必要占屏幕空间。
9.4 实战:用颜色和格式排查内存泄漏
我记得有一次,App 的内存占用持续上涨,但不知道是哪里泄漏的。我做了两件事:
- 给 GC 日志标上特殊颜色:把 GC 相关的 Tag 设为紫色,这样每次 GC 发生时都能看到。
- 定制格式突出时间戳:把时间格式改为
%d{HH:mm:ss.SSS},精确到毫秒,方便对比 GC 频率。
结果发现,某个 Activity 退出后,GC 日志还在频繁出现。说明有对象没被回收。顺着这个线索,我找到了一个静态变量持有 Activity 引用的问题。
注意:颜色配置只影响 Android Studio 的显示。如果你用命令行 adb logcat,颜色是不生效的。这时候可以用 grep 加颜色参数来模拟。
9.5 命令行下的颜色方案
如果你需要在终端里看日志,可以试试这个脚本:
#!/bin/bash
# 给 logcat 输出加颜色
adb logcat -v threadtime | while read line; do
case "$line" in
*" E "*)
echo -e "\033[31m$line\033[0m" # 红色
;;
*" W "*)
echo -e "\033[33m$line\033[0m" # 黄色
;;
*" I "*)
echo -e "\033[32m$line\033[0m" # 绿色
;;
*" D "*)
echo -e "\033[34m$line\033[0m" # 蓝色
;;
*)
echo "$line"
;;
esac
done
这个脚本的原理很简单:逐行读取日志,根据等级字段添加 ANSI 颜色码。嗯,这里要注意,不同终端对 ANSI 颜色的支持程度不一样,建议先用 echo -e "\033[31mtest\033[0m" 测试一下。
9.6 知识体系:颜色与格式的核心逻辑
下面这张图,是我梳理的颜色与格式配置的核心逻辑。你看一眼就能明白整体思路:
从这张图可以看出来,整个流程其实就三步:原始日志 → 颜色+格式处理 → 易读日志。颜色负责视觉区分,格式负责信息精简,两者缺一不可。
9.7 避坑指南
我曾经踩过一个坑:在团队项目里,我把 Logcat 颜色改得花里胡哨,结果同事用我的电脑调试时,完全看不懂日志。后来我学乖了,颜色配置只放在本地,不提交到版本控制。
另外,格式定制时要注意:不要去掉关键信息。比如线程名,在多线程调试时特别重要。我见过有人为了界面简洁,把线程名去掉了,结果排查死锁问题时抓瞎了。
我的建议:先按默认格式用一周,记录下你最常看哪些字段。然后只保留这些字段,其他全部去掉。这样定制的格式才是最适合你的。
9.8 小结
颜色和格式,说白了就是给日志做「可视化增强」。颜色帮你快速定位等级,格式帮你聚焦关键信息。这两招用好了,排查问题的速度至少快一倍。
下次调试时,不妨花10分钟配置一下。你会发现,原来日志也可以这么「好看」。