回复
聊一聊鸿蒙系统的Hilog_lite组件
星蔚星
发布于 2021-9-16 17:56
浏览
0收藏
简介
提供DFX子系统在轻量系统和小型系统的流水日志功能。
目录
表 1 DFX子系统hilog_lite组件代码目录结构
名称 | 描述 |
---|---|
interfaces/native/kits/hilog | 小型系统流水日志对外接口定义 |
interfaces/native/kits/hilog_lite | 轻量系统流水日志对外接口定义 |
services/hilogcat | 小型系统流水日志相关服务和命令 |
services/apphilogcat | 小型系统流水日志落盘服务 |
command | 轻量系统日志查询命令 |
frameworks/featured | 小型系统流水日志接口实现 |
frameworks/mini | 轻量系统流水日志接口实现 |
约束
轻量系统整体代码使用标准C开发。
使用-轻量系统
-
以下以A模块为例说明如何添加模块并进行日志打印。
-
第一步添加模块ID
在“base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog_lite/hiview_log.h“中添加HILOG_MODULE_A定义。
typedef enum { /** DFX */ HILOG_MODULE_HIVIEW = 0, /** System Module A */ HILOG_MODULE_A, /** Maximum number of modules */ HILOG_MODULE_MAX } HiLogModuleType;
-
第二步模块注册
在A模块的初始化流程中添加如下代码,注册模块到日志框架中:
HiLogRegisterModule(HILOG_MODULE_A, "A");
-
第三步日志打印
在需要打印日志的.c文件中 #include “log.h”,调用如下接口:
HILOG_INFO(HILOG_MODULE_A,“log test: %d”, 88);
接口参数说明:
参数名 是否必填 参数类型 参数说明 mod 是 uint8 模块\服务的ID。统一规划分配,最大支持64个,其中第三方APP统一使用HILOG_MODULE_APP作为模块ID。 fmt 是 char * 格式化输出字符串。1、 最大支持6个可变参数,不支持%s。2、 格式化后的单条日志最大长度128字节,超过将无法打印。 可变参 否 int32 仅支持数字类型,最大支持6个变参。
-
使用-小型系统
**Native C/C++**接口
hilog 可用API
HILOG_DEBUG(type, ...)
HILOG_INFO(type, ...)
HILOG_WARN(type, ...)
HILOG_ERROR(type, ...)
HILOG_FATAL(type, ...)
使用介绍
- 首先需要定义TAG。
- 本地调试,可以临时使用domain数值 0。
- 包含头文件:#include <hilog/log.h>
- 在BUILD.gn中添加依赖库 libhilog。
接口规则介绍:
- 格式化字符串默认是非隐私 HILOGI(“Hello World\n”); >> Hello World
- 格式化参数默认是隐私 HILOGI(“Age is %d\n”, 10); >> Age is <private>
- %{private}标识的参数是隐私 HILOGI(“Age is %{private}d\n”, 10); >> Age is <private>
- %{public}标识的参数是非隐私 HILOGI(“Age is %{public}d\n”, 10); >>Age is 10
接口参数介绍
参数名字 | 参数含义 |
---|---|
domain | 领域标识ID |
tag | 日志tag |
isFmtPrivate | 标识格式化字符串fmt是否是隐私,是yes时fmt会被认为是隐私 |
fmt | 格式化字符串 |
args | 格式化字符串参数 |
日志查看
- debug版本hilog日志会保存到/storage/data/log/目录下面。
- 可以执行hilogcat实时查看hilog日志。
日志系统架构
-
hilogtask流水日志的内核任务。
- 此功能是一个linux内核的任务或者线程,在系统启动时初始化。
- 当内核中一个模块调用它的日志接口,将格式化好的日志内容传输给改任务,并将其存储在一个环形缓冲区中 。
- 当用户态调用日志接口,将格式化好的日志内容通过ioctl调用写入驱动节点,驱动节点再将日志内容发送到hilogtask,hilogtask将日志内容存储到环形缓冲区中。
-
hilogcatd用户态日志存储服务。
- 这是一个用户态的进程,负责定时将内核的ringbuffer读取出来,存储到日志文件中。
- 日志文件输出支持gzip压缩,使用zlib
- 存储文件的单个文件大小,文件个数可在编译时配置。
-
hilogcat日志查看命令行工具。
从内核驱动接口读取ringbuffer内容,输出到标准输出。
-
支持日志缓冲区可配置。
- 编译时可以配置日志缓冲区的大小。
涉及仓
DFX子系统
hiviwdfx_hilog_lite
hiviwdfx_hiview_lite
hiviwdfx_hievent_lite
hiviewdfx_hilog_lite-master.zip 156.78K 4次下载
已于2021-9-16 17:56:41修改
赞
1
收藏
回复
相关推荐