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