鸿蒙系统 hilog 使用指南(新手笔记)

适用对象:刚接触鸿蒙日志、需要抓日志排障的新人
文档定位:照着敲就能抓到日志 + 随时查的命令速查 + 踩坑记录
配套文档:hdc 环境配置(hilog 经 hdc 跑)· wukong 测试(日志分析配 wukong)


一、hilog 是什么(30 秒理解)

hilog 是鸿蒙系统统一的日志系统,相当于 Android 的 logcat

  • 设备端hilog 命令实时查看/过滤系统与应用日志(系统自带,进 hdc shell 就能用)
  • PC 端hilogtool 解析工具,把设备落盘的二进制 gz 日志转成明文(在 SDK 里)

一句话记忆法:hilog = 鸿蒙版 logcat;在线看用 hilog,离线分析用 hilogtool


二、先搞懂三个核心概念(过滤全靠它们)

概念 含义 举例
级别 Level 日志严重程度,5 级 D < I < W < E < F(Debug/Info/Warn/Error/Fatal)
域 Domain 业务领域编号,范围 0x0000~0xFFFFF 0xD000 应用层、0x0001 内核等
标签 Tag 调用所在类/业务的字符串标识 WukongMyAbility

过滤本质就是拿这三个维度去"筛"日志。新手最常问的"只看报错"= 按级别筛 E/F

五种级别速记

D  DEBUG   开发调试细节(发布版通常关闭)
I  INFO    重要业务信息
W  WARN    潜在问题警告
E  ERROR   错误(必看)
F  FATAL   致命错误(崩溃级)

三、工具从哪来

工具 位置 说明
hilog 设备系统自带 hdc shell 里直接用,无需安装
hilogtool PC 端 HarmonyOS SDK 的 hms/toolchains 目录 离线解析落盘日志用,需配 PATH

解析工具的 PATH 配置和 hdc 一模一样,把 hms/toolchains 目录加进 Path(Windows)或 ~/.bashrc(Linux),重启终端即可。


四、hilog 命令参数速查表

不同版本参数略有差异,以设备上 hilog -h 实际输出为准。下表为常用稳定项。

短选项 长选项 含义 示例
-h --help 帮助 hilog -h
-L --level 按级别过滤(D/I/W/E/F) hilog -L E
-D --domain 按域过滤(十六进制) hilog -D 0xD000
-T --tag 按标签过滤 hilog -T Wukong
-t --tail 只显示最后 N 行 hilog -t 200
-b --buffer 指定缓冲区(main/crash…) hilog -b crash
-v --format 输出格式(time/threadtime/color…) hilog -v threadtime
-c --clear 清除日志缓冲区 hilog -c
-g --buffer-size 查询缓冲区大小 hilog -g
-G --buffer-size-set 设置缓冲区大小 hilog -G 1M
-x --filter 扩展组合过滤(字段:值 见下方说明
-f --file 写日志到文件 hilog -w start -f /data/...
-w --write 落盘写模式(start/stop) hilog -w start
-s --statistics 显示日志统计 hilog -s
-S --statistics-reset 重置统计 hilog -S
--no-color 关闭彩色输出 hilog --no-color
--no-privacy 关闭隐私掩码(root,慎用) hilog --no-privacy

-x 扩展过滤支持 字段:值 形式(如按 pid、进程名等组合),具体字段以 hilog -h 为准,常用于精细筛选。


五、新手直接抄的实战模板

以下命令默认已 hdc shell 进入设备;也可写成 hdc shell "hilog -L E" 一行执行。

# 1. 实时全量日志(不停刷,Ctrl+C 退出)
hilog

# 2. 只看 Error 及以上(排障最常用)
hilog -L E

# 3. 只看某个标签(如 wukong 测试日志)
hilog -T Wukong

# 4. 按域过滤(只看应用层 0xD000)
hilog -D 0xD000

# 5. 组合:Error 级 + 指定标签
hilog -L E -T MyTag

# 6. 只看最后 200 行(快速回看)
hilog -t 200

# 7. 查看崩溃缓冲区(查 crash / appfreeze)
hilog -b crash

# 8. 带线程时间的格式化输出(定位更清晰)
hilog -v threadtime

# 9. 配合 wukong:只看压测相关日志
hilog | grep -i wukong

# 10. 清掉历史日志再抓(避免干扰)
hilog -c
hilog -L E

# 11. 看当前日志量统计
hilog -s

落盘到设备文件(想保存下来慢慢看)

# 开始记录
hilog -w start -f /data/local/tmp/mylog.txt
# ... 此时去操作设备 / 跑 wukong ...
# 停止记录
hilog -w stop
# 把文件拉回 PC
hdc file recv /data/local/tmp/mylog.txt ./mylog.txt

⚠️ 自定义文件名落盘可能导致 hilogtool 解析失败(需 hilogtool 1.0.0b+)。新手建议直接用系统默认落盘路径 /data/log/hilog(见下一节),不要手动 -w -f


六、离线日志导出与解析(hilogtool)

鸿蒙会把日志自动落盘到设备 /data/log/hilog 目录,但格式是编码后的二进制 gz,直接解压看不到明文,必须用 hilogtool 解析。

注意:在线 hilog 查看不受影响;只有导出的 gz 文件需要解析。kmsg 日志不受影响,可直接看。

标准流程(强烈推荐用脚本,见下)

# 1. 把设备日志目录整个导出到 PC 当前目录
hdc file recv /data/log/hilog/ ./hilog_logs

# 2. 用 hilogtool 解析(自动匹配同目录下的数据字典)
hilogtool parse -i ./hilog_logs -d ./hilog_logs

# 3. 解析后同目录生成明文日志,直接打开查看

解析命令参数

选项 含义 示例
-i/--input 输入目录或文件(缺省=当前目录) hilogtool parse -i ./hilog_logs
-o/--output 输出目录(缺省=原日志所在目录) hilogtool parse -i .\ -o D:\temp
-d/--dict 数据字典路径(缺省=当前目录匹配最新字典) hilogtool parse -i .\ -d .\dict.zip
-h 帮助 hilogtool -h
-v 版本 hilogtool -v

关键:数据字典(hilog_dict*.zip)

  • 设备 /data/log/hilog 下自动生成,形如 hilog_dict.20240908-142200.zip
  • 解析时必须带上它,否则部分日志解析失败
  • 重启设备会重新生成字典
  • 转发他人日志时,建议解析后再发,或把 gz + 字典一起发

一键脚本(导出即解析)

Windows get_hilog.bat

@set Ymd=%date:~0,4%_%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
@set Ymd=%Ymd: =0%
@set Dir=LOG_%Ymd%
md %Dir%
hdc file recv /data/log/hilog/ .\%Dir%\
hilogtool parse -i .\%Dir% -d .\%Dir%
pause

Linux/macOS get_hilog.sh

Ymd=$(date "+%Y_%m%d_%H%M%S")
Dir=LOG_$Ymd
mkdir $Dir
hdc file recv /data/log/hilog/ ./$Dir/
./hilogtool parse -i ./$Dir -d ./$Dir

七、与 wukong 配合(实战闭环)

跑稳定性压测时,日志是发现问题的主要证据:

# 终端 A:跑 wukong
hdc shell
wukong exec -b com.example.myapp -a 0.3 -t 0.7 -T 30

# 终端 B:实时盯 wukong 相关日志(崩溃/异常一目了然)
hdc shell hilog | grep -i wukong
# 或只看 Error 级
hdc shell hilog -L E | grep -i wukong

# 压测结束:导出离线日志留证
hdc file recv /data/log/hilog/ ./wukong_logs
hilogtool parse -i ./wukong_logs -d ./wukong_logs

重点关注异常关键字:JS CrashCPP CrashAppFreezeResource LeakApp Killed


八、⚠️ 新手必踩的 6 个坑

  1. 直接解压 gz 看不到日志 → 那是二进制编码日志,必须用 hilogtool parse 解析。
  2. 解析报 “no hilog dict zip” → 没把数据字典一起导出,或没用 -d 指定。导出时连 hilog_dict*.zip 一起 recv
  3. 部分日志解析失败(错误码 300) → 替换过 bin/so 调试,字典不匹配。执行 hilog -d /system/bin/你的程序 增量生成字典,或重启设备。
  4. 日志里参数被 **** 遮住 → 这是隐私脱敏。root 下用 hilog --no-privacy 看明文(涉及隐私,谨慎使用)。
  5. 缓冲区满、前面日志丢了 → 用 hilog -G 1M 调大缓冲区再抓。
  6. 手动 -w -f 自定义文件名,hilogtool 解析不了 → 升级 hilogtool 到 1.0.0b+,或直接用系统默认 /data/log/hilog 落盘。

记忆口诀:在线 hilog 直接看,落盘 gz 要 tool 解;解析少不了 dict 字典。


九、标准作业流(SOP)

1. hdc shell 进设备(hdc 已配好,见配套文档)
2. hilog -c          先清历史
3. hilog -L E         实时看错误(或跑 wukong 时另开终端 grep)
4. 发现异常 → hilog -b crash 看崩溃缓冲
5. 需离线分析 → hdc file recv /data/log/hilog/ ./logs
6. hilogtool parse -i ./logs -d ./logs   转明文
7. 打开明文日志定位问题

十、一句话速记卡(贴显示器上)

hilog = 鸿蒙版 logcat
级别: D<I<W<E<F  (Debug/Info/Warn/Error/Fatal)
过滤: -L 级别  -D 域  -T 标签  -t 行数  -b crash
hilog -L E              只看报错
hilog -T Wukong        只看某标签
hilog -c               清屏
hdc shell hilog | grep wukong   配合压测

落盘日志在 /data/log/hilog(二进制 gz)
hilogtool parse -i 目录 -d 目录   转明文
解析必带数据字典 hilog_dict*.zip

参考来源

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐