OpenHarmony实战:Hilog组件在交互时应用指南

一、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 压缩算法。
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学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 12:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 12:42:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 12:42:02       82 阅读
  4. Python语言-面向对象

    2024-04-02 12:42:02       91 阅读

热门阅读

  1. SpringMVC上下文对象

    2024-04-02 12:42:02       31 阅读
  2. Git 的基本概念和使用方式

    2024-04-02 12:42:02       35 阅读
  3. c++20 的部分新概念及示例代码-Contracts,Ranges

    2024-04-02 12:42:02       34 阅读
  4. 通过UDP实现参数配置

    2024-04-02 12:42:02       35 阅读
  5. PTA 7-2 数列循环左移 python

    2024-04-02 12:42:02       34 阅读
  6. C++里指针和引用的区别

    2024-04-02 12:42:02       34 阅读
  7. GPT-4智能体:迈向GPT-5的跳板

    2024-04-02 12:42:02       29 阅读
  8. 【机器学习算法介绍】(1)K近邻算法

    2024-04-02 12:42:02       40 阅读
  9. 每天学习一个Linux命令之wget

    2024-04-02 12:42:02       28 阅读
  10. vfox使用指南

    2024-04-02 12:42:02       46 阅读
  11. 01xcxjc

    2024-04-02 12:42:02       35 阅读
  12. 高校智慧教室物联网系统设计与实现的探索

    2024-04-02 12:42:02       28 阅读
  13. PTA 7-18 蛇鸟 python

    2024-04-02 12:42:02       33 阅读