# 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)