# Hilog\_lite组件介绍
- [简介](#s9c9ad6e6d5494719ad0f6630a0a1add4)
- [目录](#s4edd47ec6791449aa2d6362fed84325e)
- [约束](#s7f347323ea45437ca31edae5c10f2991)
- [使用-轻量系统](#sd6e99f792bc942f9bb5aa92111be7aff)
- [使用-小型系统](#s33e0a62bc1dd4a2a9578fc22bd023f11)
- [涉及仓](#s999c697ebde345449386ce8dc1df1db0)
## 简介
提供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模块为例说明如何添加模块并进行日志打印。**
1. **第一步添加模块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;
```
1. **第二步模块注册**
在A模块的初始化流程中添加如下代码,注册模块到日志框架中:
```
HiLogRegisterModule(HILOG_MODULE_A, "A");
```
1. **第三步日志打印**
在需要打印日志的.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, ...)
```
使用介绍
1. 首先需要定义TAG。
2. 本地调试,可以临时使用domain数值 0。
3. 包含头文件:\#include
4. 在BUILD.gn中添加依赖库 libhilog。
接口规则介绍:
1. 格式化字符串默认是非隐私 HILOGI\("Hello World\\n"\); \>\> Hello World
2. 格式化参数默认是隐私 HILOGI\("Age is %d\\n", 10\); \>\> Age is
3. %\{private\}标识的参数是隐私 HILOGI\("Age is %\{private\}d\\n", 10\); \>\> Age is
4. %\{public\}标识的参数是非隐私 HILOGI\("Age is %\{public\}d\\n", 10\); \>\>Age is 10
接口参数介绍
参数名字
|
参数含义
|
domain
|
领域标识ID
|
tag
|
日志tag
|
isFmtPrivate
|
标识格式化字符串fmt是否是隐私,是yes时fmt会被认为是隐私
|
fmt
|
格式化字符串
|
args
|
格式化字符串参数
|
**日志查看**
1. debug版本hilog日志会保存到/storage/data/log/目录下面。
2. 可以执行hilogcat实时查看hilog日志。
**日志系统架构**
![](figures/zh-cn_image_0000001078803238.png)
1. hilogtask流水日志的内核任务。
- 此功能是一个linux内核的任务或者线程,在系统启动时初始化。
- 当内核中一个模块调用它的日志接口,将格式化好的日志内容传输给改任务,并将其存储在一个环形缓冲区中 。
- 当用户态调用日志接口,将格式化好的日志内容通过ioctl调用写入驱动节点,驱动节点再将日志内容发送到hilogtask,hilogtask将日志内容存储到环形缓冲区中。
2. hilogcatd用户态日志存储服务。
- 这是一个用户态的进程,负责定时将内核的ringbuffer读取出来,存储到日志文件中。
- 日志文件输出支持gzip压缩,使用zlib
- 存储文件的单个文件大小,文件个数可在编译时配置。
3. hilogcat日志查看命令行工具。
从内核驱动接口读取ringbuffer内容,输出到标准输出。
4. 支持日志缓冲区可配置。
- 编译时可以配置日志缓冲区的大小。
## 涉及仓
[DFX子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/DFX%E5%AD%90%E7%B3%BB%E7%BB%9F.md)
**hiviewdfx\_hilog\_lite**
[hiviewdfx\_hiview\_lite](https://gitee.com/openharmony/hiviewdfx_hiview_lite/blob/master/README_zh.md)
[hiviewdfx\_hievent\_lite](https://gitee.com/openharmony/hiviewdfx_hievent_lite/blob/master/README_zh.md)