一、OpenHarmony hilog 组件工具概述
hilog 是 OpenHarmony 日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。适用于 OpenHarmony 应用、硬件开发及测试人员,是每个开发人员的必备、入门工具。
hilog 日志查看命令行工具,从 hilogd 读取 ringbuffer 内容,到标准输出,可支持日志过滤。
支持特性:
- 支持参数隐私标识格式化(详见下面应用举例)。
- 支持对超标日志打印进程流控。
- 支持对超标日志打印 domain(标识子系统/模块)流控。
- 支持流压缩落盘。
二、应用前准备
- 支持运行环境本文以 window10 x64 电脑和 Rk3568 开发板为例进行说明。
- hdc 准备就绪
hdc 可以正常运行,即打开 cmd 窗口,执行 hdc shell 就进入了 hilog 命令交互界面。
三、hilog 命令应用举例
序号 | 命令 | 功能描述 | 成功输出 |
---|---|---|---|
1 | hilog grep "C02800" | 抓取含有 C02800 字符的日志 | 08-05 17:08:32.754 256 762 E C02800... |
2 | hilog -w start -f "mylog" -l 1M -m zlib -n 10 | 执行名字为 hilog 的落盘任务,10 个落盘文件进行轮转,单个文件落盘大小为 1M,采用 zlib 压缩算法。 type、level、domain、tag 支持排除查询,排除查询可以使用以"^"开头的参数和分隔符",""."来完成 | Persist task [jobid:1] start successfully |
3 | hilog -w query -j 1 | 指定 jobid 查询 | 1 init,core,app zlib /data/log/hilog/mylog 1.0M 10 |
4 | hilog -w query | 查询全部落盘任务 | 1 init,core,app zlib /data/log/hilog/mylog 1.0M 10 |
5 | hilog -w stop | 停止落盘任务 | Persist task [jobid:1] stop successfully |
6 | hilog -w start -f "mylog" | 启动落盘任务 | Persist task [jobid:1] start successfully |
7 | hilog -t ^core | app 排除 core 和 app 类型的日志,可以与其他参数一起使用。 | Invalid log type, the valid log types include app/core/init/kmsg [CODE: -3] |
8 | hilog -t core | 打印 core 类型的日志,可以与其他参数一起使用。 | 08-05 17:56:05.319... |
9 | hilog -t app -a 3 | 只显示前 3 行日志 | 08-05 17:00:09.212 0 0 I A00000/hilog: ========Zeroth log of type: app 08-05 17:00:16.482 977 977 I A0001a/SystemUI_Default: ... 08-05 17:00:16.574 977 977 I A0001a/SystemUI_Default: ... |
10 | hilog -t app -z 3 | 只显示后 3 行日志 | 08-05 17:58:00.015 977 977 I A0002a/ScreenLock_Default: EventManagerSc... 08-05 17:58:00.040 977 977 I A0001a/SystemUI_Default: EventManager... 08-05 17:58:00.043 977 977 I A0002a/ScreenLock_Default: ... |
11 | hilog -t app -s | 查询统计信息,需配合-t 或-D 使用 | Statistic info query failed Statistic feature is not enable, please set param persist.sys.hilog.stats true to enable it, |
12 | hilog -t app -S | 清除统计信息,需配合-t 或-D 使用 | Statistic info clear successfully |
13 | hilog -t app -r | 清除 buffer 日志,配合-t 指定某一类型使用,默认 app 和 core | Log type app buffer clear successfully |
14 | hilog -g -t app | 查询日志类型为 app 的 buffer 大小。 | Log type app buffer size is 256.0K |
15 | hilog -g -t core | 查询 core 模块的 buffer | Log type core buffer size is 256.0K |
16 | hilog -g | 查询 app, init, core 的 buffer | Log type app buffer size is 256.0K Log type init buffer size is 256.0K Log type core buffer size is 256.0K |
17 | hilog -G 2M -t core | 设置 buffer 大小为 2M,日志类型为 core | None |
18 | hilog -t app -G 2M | 设置 app 模块的 buffer | Set log type app buffer size to 2.0M successfully |
19 | hilog -t app -g | 查询 app 模块的 buffer | Log type app buffer size is 2.0M |
20 | hilog -t init -T ^MMIClient | type、level、domain、tag 支持排除查询,排除查询可以使用以"^“开头的参数和分隔符”,"来完成 " | 08-05 17:00:09.212 0 0 I I00000/hilog:... |
21 | hilog -D 0xD002220 | 指定 0xD002220 dmain 的日志 | 08-05 17:14:51.055 468 1797 D C02220/... |
22 | hilog -b D -D 0xD002220 | 指定 0xD002220 domain 的 DEBUG 日志查询 | Set domain 0xd002220 log level to D successfully |
23 | hilog -t app | 指定 domian 查询,可以与其他参数一起使用 | 08-05 17:19:07.587 1082 1082 I A0001b/Launcher_Default:... |
24 | hilog -L I | 指定 level 查询 指定日志级别,hilog 中定义了 DEBUG、INFO、WARN、ERROR、FATAL 五种日志级别 | 08-05 18:16:19.461 2675 2675 I C01800/ ... |
25 | hilog -t app -L I | 指定日志级别 level 查询 | 08-05 18:13:00.040 977 977 I A0002a/ScreenLock_Default ... |
26 | hilog -T MMIClient | 指定日志标签 tag 查询 | 08-05 18:15:06.994 256 762 E C02800/MMIClient... |
27 | hilog -t core -T MMIClient | 指定日志标签 tag 和模块查询, -T 可以与其他参数一起使用 | 08-05 18:15:59.106 256 762 E C02800/MMIClient... |
28 | hilog -t kmsg | 指定 kmsg 模块查询 | 08-05 18:08:15.374 11,16269,4092503320... |
29 | hilog -t app -x | 非阻塞式实时查询 app 模块 | 08-05 18:00:23.547 977 977 I A0002a/ScreenLock_Default... |
30 | hilog -b X | 关闭一切 DEBUG 和 INFO 日志 | Set global log level to X successfully |
四、特别地导出日志
落盘的日志在 ./data/log/hilog/ 下面,都是以压缩包的形式保存的,需要 hdc recv 命令从开发板导出到 PC 目录。
- 退出不停刷屏日志 Ctrl+Z
- 退出命令行交互窗口到 cmd 窗口,命令如下#exit
- 导出命令如下> hdc file recv /data/log/hilog/ d:\FileTransfer finish, File count = 1, Size:73310 time:14ms rate:5236.43kB/s 这时 PC 端会出现这样的文件 D:\hilog\mylog.000.xxx-xxx.gz,解压缩后用 Notepad 或者写字本打开查看
- 关闭掉一切 DEBUG 和 INFO 日志, 命令如下
hilog -b X
以上较为完整地演示了常用的命令用法,如果需要其他选项请通过 hilog -h 查询。
五、hilog 命令行使用说明
序号 | 短选项 | 长选项 | 参数 | 说明 |
---|---|---|---|---|
1 | -h | --help | None | 帮助命令 |
2 | 缺省 | 缺省 | None | 阻塞读日志,不退出 |
3 | -x | --exit | None | 非阻塞读日志,读完退出 |
4 | -g | None | None | 查询 buffer 的大小,配合-t 指定某一类型使用,默认 app 和 core |
5 | -G | --buffer-size | 设置指定日志类型缓冲区的大小,配合-t 指定某一类型使用,默认 app 和 core, 可使用 B/K/M/G 为单位 | |
6 | -r | None | None | 清除 buffer 日志,配合-t 指定某一类型使用,默认 app 和 core |
7 | -p | --privacy | <on/off> | 支持系统调试时日志隐私开关控制 |
8 | None | None | on | 打开隐私开关,显示 |
9 | None | None | off | 关闭隐私开关,显示明文 |
10 | -k | None | <on/off> | Kernel 日志读取开关控制 |
11 | None | None | on | 打开读取 kernel 日志 |
12 | None | None | off | 关闭读取 kernel 日志 |
13 | -s | --statistics | None | 查询统计信息,需配合-t 或-D 使用 |
14 | -S | None | None | 清除统计信息,需配合-t 或-D 使用 |
15 | -Q | None | 流控缺省配额开关控制 | |
16 | None | None | pidon | 进程流控开关打开 |
17 | None | None | pidoff | 进程流控开关关闭 |
18 | None | None | domainon | domain 流控开关打开 |
19 | None | None | domainoff | domain 流控开关关闭 |
20 | -L | --level | 指定级别的日志,示例:-L D/I/W/E/F | |
21 | -t | --type | 指定类型的日志,示例:-t app core init | |
22 | -D | --domain | 指定 domain | |
23 | -T | --Tag | 指定 tag | |
24 | -a | --head | 只显示前行日志 | |
25 | -z | --tail | 只显示后行日志 | |
26 | -P | --pid | 标识不同的 pid | |
27 | -e | --regex | 只打印日志消息与匹配的行,其中是一个正则表达式 | |
28 | -f | --filename | 设置落盘的文件名 | |
29 | -l | --length | 设置落盘的文件大小,需要大于等于 64K | |
30 | -n | --number | 设置落盘文件的个数 | |
31 | -j | --jobid | 设置落盘任务的 ID | |
32 | -w | --write | 落盘任务控制 | |
33 | None | None | query | 落盘任务查询 |
34 | None | None | start | 落盘任务开始,命令行参数为文件名、单文件大小、落盘算法、rotate 文件数目. |
35 | None | None | stop | 落盘任务停止 |
36 | -m | --stream | 落盘方式控制 | |
37 | None | None | none | 无压缩方式落盘 |
38 | None | None | zlib | zlib 压缩算法落盘,落盘文件为.gz |
39 | None | None | zstd | zstd 压缩算法落盘,落盘文件为.zst |
40 | -v | --format | None | |
41 | None | None | time | 显示本地时间 |
42 | None | None | color | 显示不同级别显示不同颜色,参数缺省级别颜色模式处理(按黑白方式) |
43 | None | None | epoch | 显示相对 1970 时间 |
44 | None | None | monotonic | 显示相对启动时间 |
45 | None | None | usec | 显示微秒精度时间 |
46 | None | None | nsec | 显示纳秒精度时间 |
47 | None | None | year | 显示将年份添加到显示的时间 |
48 | None | None | zone | 显示将本地时区添加到显示的时间 |
49 | -b | --baselevel | 设置可打印日志的最低等级:D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL) |
六、常用几个参数说明
6.1 可查询字段说明
序号 | 可查询字段 | 命令符 | 入参 | 含义 |
---|---|---|---|---|
1 | 模块 type | -t | app, core, kmsg, init | None |
2 | level | -L | D、W、E、F | DEBUG、INFO、WARN、ERROR、FATAL |
3 | domain | -D | 0x------ | 16 进制整数,范围 0x0~0xFFFF |
4 | Tag | -T | None | 标识调用所在的类或者业务 |
6.2 日志级别的详细说明
DEBUG:比 INFO 级别更详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。DEBUG 级别的日志在正式发布版本中默认不会被打印,只有在调试版本或打开调试开关的情况下才会打印。
INFO:用来记录业务关键流程节点,可以还原业务的主要运行过程;用来记录非正常情况信息,但这些情况都是可以预期的(如无网络信号、登录失败等)。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。
WARN:发生了较为严重的非预期情况,但是对用户影响不大,程序可以自动恢复或通过简单的操作就可以恢复的问题。
ERROR:程序或功能发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。
FATAL:重大致命异常,表明程序或功能即将崩溃,故障无法恢复。
6.3 Buffer 大小单位 B/K/M/G
七、补充
源代码目录 .\base\hiviewdfx\hilog。文中涉及的 hdc 工具可参阅《OpenHarmony 命令行工具 hdc 安装应用指南》。用 Cmder.exe 代替系统 cmd 控制台程序,可以分割多个窗口同时监听、交互感兴趣的内容。这个软件十分好用,因为安装包较大建议自行下载。
八、总结
OpenHarmony hilog 组件的交互应用详细阐述了其在开发过程中的重要作用,既有应用举例又有完整的命令参数说明。此文可珍藏作为工作的常用手册,以备不时之需。
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
鸿蒙(HarmonyOS NEXT)最新学习路线
-
HarmonOS基础技能
- HarmonOS就业必备技能
- HarmonOS多媒体技术
- 鸿蒙NaPi组件进阶
- HarmonOS高级技能
- 初识HarmonOS内核
- 实战就业级设备开发
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门教学视频》
《鸿蒙生态应用开发V2.0白皮书》
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》
- Stage模型入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
- 国际化开发
- 应用测试
- DFX面向未来设计
- 鸿蒙系统移植和裁剪定制
- ……
《鸿蒙进阶实战》
- ArkTS实践
- UIAbility应用
- 网络案例
- ……
获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料
总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。