2023-08-05 | 折腾

Make adb logcat Great Again!

几年前记录过关于 lnav 的使用,但是一直停留在 filter-in / filter-out 这两个基础命令,最近研究 lnav 的 format,解锁了 sql query 和 filter-expr 操作。

先装一个 lnav

  1. 安装 lnav.
    1
    brew install lnav
  2. 安装 lnav logcat format.
    1
    2
    3
    4
    mkdir -p ~/.lnav/format/
    # download https://github.com/aspiers/lnav-formats alogcat.json
    mv alogcat.json ~/.lnav/format/
    lnav -i ~/.lnav/format/alogcat.json
    安装好之后就可以使用 alogcat 格式。
  3. SQL 查询使用.
    打开一个 logcat 日志: adb logcat --pid=$(adb shell pidof -s com.android.chrome) | lnav
    ; 进入 sql 查询。
    1
    SELECT log_line,log_body FROM alogcat WHERE tag = 'NetLogger'
  4. 导出 sql 查询内容到 csv.
    : 进入命令模式。
    1
    writer-csv-to ~/path/to/file.csv
  5. 使用 filter-expr 过滤日志流.
    在日志流内,也可以使用 filter-expr 对 format 描述的 field 进行过滤。
    : 进入命令模式,用正则过滤掉垃圾日志.
    1
    :filter-expr :tag NOT REGEXP 'WindowManager'