# hiviewdfx_hilog_lite
**Repository Path**: wang19954/hiviewdfx_hilog_lite
## Basic Information
- **Project Name**: hiviewdfx_hilog_lite
- **Description**: MCU log module in the DFX subsystem | DFX-MCU日志模块
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 117
- **Created**: 2021-11-03
- **Last Updated**: 2021-11-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 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日志。
**日志系统架构**

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)
**hiviwdfx\_hilog\_lite**
[hiviwdfx\_hiview\_lite](https://gitee.com/openharmony/hiviewdfx_hiview_lite/blob/master/README_zh.md)
[hiviwdfx\_hievent\_lite](https://gitee.com/openharmony/hiviewdfx_hievent_lite/blob/master/README_zh.md)