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 的内存占用持续上涨,但不知道是哪里泄漏的。我做了两件事:

  1. 给 GC 日志标上特殊颜色:把 GC 相关的 Tag 设为紫色,这样每次 GC 发生时都能看到。
  2. 定制格式突出时间戳:把时间格式改为 %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 知识体系:颜色与格式的核心逻辑

下面这张图,是我梳理的颜色与格式配置的核心逻辑。你看一眼就能明白整体思路:

Logcat 颜色与格式配置核心逻辑 原始日志 配置处理 颜色配置 按等级区分颜色 格式定制 提取关键字段 易读日志 快速定位问题

从这张图可以看出来,整个流程其实就三步:原始日志 → 颜色+格式处理 → 易读日志。颜色负责视觉区分,格式负责信息精简,两者缺一不可。

9.7 避坑指南

我曾经踩过一个坑:在团队项目里,我把 Logcat 颜色改得花里胡哨,结果同事用我的电脑调试时,完全看不懂日志。后来我学乖了,颜色配置只放在本地,不提交到版本控制。

另外,格式定制时要注意:不要去掉关键信息。比如线程名,在多线程调试时特别重要。我见过有人为了界面简洁,把线程名去掉了,结果排查死锁问题时抓瞎了。

我的建议:先按默认格式用一周,记录下你最常看哪些字段。然后只保留这些字段,其他全部去掉。这样定制的格式才是最适合你的。

9.8 小结

颜色和格式,说白了就是给日志做「可视化增强」。颜色帮你快速定位等级,格式帮你聚焦关键信息。这两招用好了,排查问题的速度至少快一倍。

下次调试时,不妨花10分钟配置一下。你会发现,原来日志也可以这么「好看」。


公众号:蓝海资料掘金营,微信deep3321