1 Star 0 Fork 113

seashell / hiviewdfx_hilog_lite

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_zh.md 16.88 KB
一键复制 编辑 原始数据 按行查看 历史
stesen 提交于 2021-03-16 09:16 . update url

Hilog_lite组件介绍

简介

提供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;
    2. 第二步模块注册

      在A模块的初始化流程中添加如下代码,注册模块到日志框架中:

      HiLogRegisterModule(HILOG_MODULE_A, "A");
    3. 第三步日志打印

      在需要打印日志的.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 <hilog/log.h>

  4. 在BUILD.gn中添加依赖库 libhilog。

接口规则介绍:

  1. 格式化字符串默认是非隐私 HILOGI("Hello World\n"); >> Hello World

  2. 格式化参数默认是隐私 HILOGI("Age is %d\n", 10); >> Age is <private>

  3. %{private}标识的参数是隐私 HILOGI("Age is %{private}d\n", 10); >> Age is <private>

  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子系统

hiviwdfx_hilog_lite

hiviwdfx_hiview_lite

hiviwdfx_hievent_lite

1
https://gitee.com/luquick/hiviewdfx_hilog_lite.git
git@gitee.com:luquick/hiviewdfx_hilog_lite.git
luquick
hiviewdfx_hilog_lite
hiviewdfx_hilog_lite
master

搜索帮助