DFX子系统之日志组件HiLog相关介绍
OpenHarmony的DFX子系统提供了一个功能非常强大的组件集合, 可方便开发者针对性地跟踪程序流程,排查异常和解决实际问题。本文简单介绍一下有关日志的打印功能,因为几乎所有的子系统、组件都不可避免地要用到它。善用日志,可非常有效地帮助我们理解OpenHarmony 各个模块的工作流程和相关细节。 DFX简介 在OpenHarmony中&
OpenHarmony的DFX子系统提供了一个功能非常强大的组件集合, 可方便开发者针对性地跟踪程序流程,排查异常和解决实际问题。本文简单介绍一下有关日志的打印功能,因为几乎所有的子系统、组件都不可避免地要用到它。善用日志,可非常有效地帮助我们理解OpenHarmony 各个模块的工作流程和相关细节。
DFX简介
在OpenHarmony中,DFX(Design for X)是为了提升质量属性软件设计,目前包含的内容主要有:DFR(Design for Reliability,可靠性)和DFT(Design for Testability,可测试性)特性。
提供以下功能:
HiLog流水日志。
HiView插件平台。
FaultLoggerd应用故障收集和订阅。
HiAppEvent应用事件记录接口及框架。
HiSysEvent系统事件记录接口及服务。
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类型的日志,可以与其他参数一起使用。
更多推荐
所有评论(0)