DFX子系统之hiview、hiview_lite日志组件介绍

306 阅读3分钟

  OpenHarmony的DFX子系统提供了一个功能非常强大的组件集合, 可方便开发者针对性地跟踪程序流程,排查异常和解决实际问题。本文简单介绍一下有关日志的打印功能,因为几乎所有的子系统、组件都不可避免地要用到它。善用日志,可非常有效地帮助我们理解OpenHarmony 各个模块的工作流程和相关细节。

DFX简介

在OpenHarmony中,DFX(Design for X)是为了提升质量属性软件设计,目前包含的内容主要有:DFR(Design for Reliability,可靠性)和DFT(Design for Testability,可测试性)特性。

提供以下功能:

  • HiLog流水日志。

  • HiView插件平台。

  • FaultLoggerd应用故障收集和订阅。

  • HiAppEvent应用事件记录接口及框架。

  • HiSysEvent系统事件记录接口及服务。

HiLog架构图:

HiLog架构图

在OpenHarmony源码中,以轻量系统为例,我们可以找到// vendor/ hisilicon/ hispark _ pegasus/ config. json和// build/ lite/ components/ hiviewdfx. json这两个文件。config. json是子系统hiviewdfx的配置文件,包含hilog_lite、hievent_lite、blackbox、hidumper_mini等组件,在hiviewdfx.json文件也有这几类子组件的配置,部署路径均在‘//base/hiviewdfx/‘下,如下所示。

base/hiviewdfx     # DFX主仓,用于存放编译相关配置 ├── hiview         # hiview部件,包含插件平台和事件分发能力 ├── hiview_lite    # hiview_lite部件,包含轻量系统的日志任务能力 ├── hilog          # hilog部件,包含标准系统的流水日志能力 ├── hilog_lite     # hilog_lite部件,包含轻量和小型系统的流水日志能力 ├── hievent_lite   # hievent_lite部件,包含轻量系统的事件日志能力 ├── hiappevent     # hiappevent部件,包含应用事件记录接口及框架 ├── hisysevent     # hisysevent部件,包含系统事件记录接口及服务 ├── faultloggerd   # faultloggerd部件,包含应用故障日志采集服务

hilog 框架主要实现了日志的打印、输出和流控功能,目录如下。 /base/hiviewdfx/hilog ├── frameworks           # 框架代码 │   └── native           # HiLog native实现代码 ├── interfaces           # 接口 │   └── native           # 对外C/C++接口 │       └── innerkits    # 对内部子系统暴露的头文件 │       └── kits         # 对应用暴露的头文件 │   └── js               # 对外js接口 ├── services │   └── hilogd           # 日志常驻服务实现 │   └── hilogtool        # 日志工具实现

做应用开发中常用到的Hilog调用,则主要是interfaces/native/ kits/hilog目录下的hiview_log.h文件中做的封装,通过实现宏HILOG_XXX定义,这是日志框架对外提供的接口,最终由APP调用。

hilog有比较丰富的命令行配置,以下简单举例。

设置日志级别命令: hilog -b W \设置全局日志级别为Warn级别。 hilog -b D -T testTag \设置日志Tag为"testTag"的日志级别为Debug级别。 hilog -b D -D 0x3200 \设置日志domainID为0x3200的日志级别为Debug级别。

示例:hilog -G 4M                                                                 解释:设置hilogd buffer大小为4M。                                                                                           示例:hilog -g                                                                    解释:查询hilogd buffer大小。                                                                                              示例:hilog -w start -n 100                                   解释:执行名字为hilog的落盘任务,不指定-n 参数默认落盘10个文件。 示例:hilog -b I 解释:将全局日志级别设置为I级别                                   type、level、domain、tag支持排除查询,排除查询可以使用以"^"开头的参数和分隔符","."来完成    示例:hilog -t ^core,app 排除core和app类型的日志,可以与其他参数一起使用。 示例:hilog -t app core 打印core和app类型的日志,可以与其他参数一起使用。