OpenHarmony开发者论坛
标题:
【TOOLS使用】OpenHarmony hilog系列之(一) Hilog组件在交互时应用指南
[打印本页]
作者:
wangyeyu01
时间:
2023-12-15 18:20
标题:
【TOOLS使用】OpenHarmony hilog系列之(一) Hilog组件在交互时应用指南
[md]# 一、OpenHarmony hilog组件工具概述
hilog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。适用于OpenHarmony应用、硬件开发及测试人员,是每个开发人员的必备、入门工具。
hilog日志查看命令行工具,从hilogd读取ringbuffer内容,到标准输出,可支持日志过滤。
支持特性:
1. 支持参数隐私标识格式化(详见下面应用举例)。
2. 支持对超标日志打印进程流控。
3. 支持对超标日志打印domain(标识子系统/模块)流控。
4. 支持流压缩落盘。
# 二、应用前准备
1. 支持运行环境本文以window10 x64电脑和Rk3568开发板为例进行说明。
2. 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压缩算法。<br>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<br>08-05 17:00:16.482 977 977 I A0001a/SystemUI_Default: ... <br>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...<br>08-05 17:58:00.040 977 977 I A0001a/SystemUI_Default: EventManager... <br>08-05 17:58:00.043 977 977 I A0002a/ScreenLock_Default: ... |
| 11 | hilog -t app -s | 查询统计信息,需配合-t或-D使用 | Statistic info query failed<br>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<br>Log type init buffer size is 256.0K <br>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查询<br>指定日志级别,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 | <size> | 设置指定<type>日志类型缓冲区的大小,配合-t指定某一类型使用,默认app和core, 可使用B/K/M/G为单位 |
| 6 | -r | None | None | 清除buffer日志,配合-t指定某一类型使用,默认app和core |
| 7 | -p | --privacy | <on/off> | 支持系统调试时日志隐私开关控制 |
| 8 | None | None | on | 打开隐私开关,显示<private> |
| 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 | <control-type> | 流控缺省配额开关控制 |
| 16 | None | None | pidon | 进程流控开关打开 |
| 17 | None | None | pidoff | 进程流控开关关闭 |
| 18 | None | None | domainon | domain流控开关打开 |
| 19 | None | None | domainoff | domain流控开关关闭 |
| 20 | -L | --level | <level> | 指定级别的日志,示例:-L D/I/W/E/F |
| 21 | -t | --type | <type> | 指定类型的日志,示例:-t app core init |
| 22 | -D | --domain | <domain> | 指定domain |
| 23 | -T | --Tag | <tag> | 指定tag |
| 24 | -a | --head | <n> | 只显示前<n>行日志 |
| 25 | -z | --tail | <n> | 只显示后<n>行日志 |
| 26 | -P | --pid | <pid> | 标识不同的pid |
| 27 | -e | --regex | <expr> | 只打印日志消息与<expr>匹配的行,其中<expr>是一个正则表达式 |
| 28 | -f | --filename | <filename> | 设置落盘的文件名 |
| 29 | -l | --length | <length> | 设置落盘的文件大小,需要大于等于64K |
| 30 | -n | --number | <number> | 设置落盘文件的个数 |
| 31 | -j | --jobid | <jobid> | 设置落盘任务的ID |
| 32 | -w | --write | <control> | 落盘任务控制 |
| 33 | None | None | query | 落盘任务查询 |
| 34 | None | None | start | 落盘任务开始,命令行参数为文件名、单文件大小、落盘算法、rotate文件数目. |
| 35 | None | None | stop | 落盘任务停止 |
| 36 | -m | --stream | <algorithm> | 落盘方式控制 |
| 37 | None | None | none | 无压缩方式落盘 |
| 38 | None | None | zlib | zlib压缩算法落盘,落盘文件为.gz |
| 39 | None | None | zstd | zstd压缩算法落盘,落盘文件为.zst |
| 40 | -v | --format | <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 | <loglevel> | 设置可打印日志的最低等级: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安装应用指南》, [链接](
https://forums.openharmony.cn/fo ... thread&tid=1458
"hdc 应用指南")
https://forums.openharmony.cn/fo ... thread&tid=1458
。用Cmder.exe 代替系统 cmd 控制台程序,可以分割多个窗口同时监听、交互感兴趣的内容。这个软件十分好用,因为安装包较大建议自行下载。
# 八、总结
OpenHarmony hilog组件的交互应用详细阐述了其在开发过程中的重要作用,既有应用举例又有完整的命令参数说明。此文可珍藏作为工作的常用手册,以备不时之需。
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5