[经验分享] 【TOOLS使用】OpenHarmony hilog系列之(一) Hilog组件在交互时应用指南 原创 精华

诚迈_雨哥 显示全部楼层 发表于 2023-12-15 18:20:25

一、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/forum.php?mod=viewthread&tid=1458 。用Cmder.exe 代替系统 cmd 控制台程序,可以分割多个窗口同时监听、交互感兴趣的内容。这个软件十分好用,因为安装包较大建议自行下载。

八、总结

OpenHarmony hilog组件的交互应用详细阐述了其在开发过程中的重要作用,既有应用举例又有完整的命令参数说明。此文可珍藏作为工作的常用手册,以备不时之需。

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部