subsys-dfx-hilog-lite.md 2.2 KB
Newer Older
D
duangavin123 已提交
1
# HiLog_Lite开发指导
N
NEEN 已提交
2 3


D
duangavin123 已提交
4
## 概述
N
NEEN 已提交
5

D
duangavin123 已提交
6
HiLog_Lite是针对轻量系统类设备(参考内存≥128KiB)、小型系统类设备(参考内存≥1MiB)的hilog框架,实现了日志的打印、输出和流控功能。
N
NEEN 已提交
7

D
duangavin123 已提交
8 9

## 接口说明
N
NEEN 已提交
10 11 12

C语言接口:

D
duangavin123 已提交
13
  
N
NEEN 已提交
14 15 16 17 18
```
HILOG_DEBUG(mod, fmt, ...)
HILOG_INFO/HILOG_WARN/HILOG_ERROR/HILOG_FATAL
```

D
duangavin123 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  
  **表1** 接口参数说明

| 参数名 | 是否必填 | 参数类型 | 参数说明 | 
| -------- | -------- | -------- | -------- |
| mod | 是 | uint8 | 模块/服务的ID。<br/>统一规划分配,最大支持64个,其中第三方APP统一使用HILOG_MODULE_APP作为模块ID。 | 
| fmt | 是 | char&nbsp;\* | 格式化输出字符串。<br/>1.&nbsp;最大支持6个可变参数,不支持%s。<br/>2.&nbsp;格式化后的单条日志最大长度128字节,超过将无法打印。 | 
| 可变参 | 否 | int32 | 仅支持数字类型,最大支持6个变参。 | 


## 开发实例

以下引用samgr_lite模块使用hilog_lite框架作为实例。

1. 添加模块ID,在“base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog_lite/hiview_log.h“的类型定义结构体中添加HILOG_MODULE_SAMGR定义。
     
   ```
   typedef enum {
       ...
       HILOG_MODULE_SAMGR,
       ...
   } HiLogModuleType;
   ```

2. 注册模块,在“base/hiviewdfx/hilog_lite/frameworks/mini/hiview_log.c“的HiLogInit函数中添加注册代码。
     
   ```
   HiLogRegisterModule(HILOG_MODULE_SAMGR, "SAMGR");
   ```

H
huangxiaolinabc123 已提交
49
3. 在GN文件中添加头文件依赖,文件路径为:“foundation/systemabilitymgr/samgr_lite/samgr/BUILD.gn“
D
duangavin123 已提交
50 51 52 53 54 55 56
     
   ```
   include_dirs = [
        "//base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog_lite",
   ]
   ```

H
huangxiaolinabc123 已提交
57
4. 源文件“foundation/systemabilitymgr/samgr_lite/samgr/source/message.c“中引用头文件并调用接口。
D
duangavin123 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70
     
   ```
   #include <log.h>
   uint32 *SAMGR_SendSharedRequest(const Identity *identity, const Request *request, uint32 *token, Handler handler)
   {
       ...
       if (err != EC_SUCCESS) {
   	HILOG_ERROR(HILOG_MODULE_SAMGR, "SharedSend [%p] failed(%d)!", identity->queueId, err);
           (void)FreeReference(&exchange);
       }
       ...
   }
   ```