1# HiLog开发指导 2 3## 概述 4 5HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。 6 7本章节内容对标准系统类设备(参考内存≥128MB)适用。 8 9 10## 接口说明 11 12**表1** C++、C的函数接口 13 14| **C++** | | **C** | 15| -------- | -------- | -------- | 16| **类** | **方法** | **方法/宏** | 17| HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | HILOG_DEBUG(type, ...) | 18| | int Info(const HiLogLabel &label, const char \*fmt, ...) | HILOG_INFO(type, ...) | 19| | int Warn(const HiLogLabel &label, const char \*fmt, ...) | HILOG_WARN(type, ...) | 20| | int Error(const HiLogLabel &label, const char \*fmt, ...) | HILOG_ERROR(type, ...) | 21| | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | HILOG_FATAL(type, ...) | 22| | NA | int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char \*tag, const char \*fmt, ...) | 23| | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | bool HiLogIsLoggable(unsigned int domain, const char \*tag, LogLevel level) | 24| HiLogLabel | struct HiLogLabel | LOG_DOMAIN<br/>LOG_TAG | 25 26**表3** C++接口说明函数参数和功能 27 28| **类** | **方法** | **描述** | 29| -------- | -------- | -------- | 30| HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 debug 级别日志。<br/>输入参数:<br/>- label:用于标识输出日志的类型、业务领域、TAG。<br/>- format:常量格式字符串,包含参数类型、隐私标识。未加隐私标识的缺省为隐私参数。<br/>- fmt:格式化变参描述字符串。<br/>输出参数:无<br/>返回值:大于等于0,成功;小于0,失败。 | 31| | int Info(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 info 级别日志。<br/>参数说明同 Debug 接口。 | 32| | int Warn(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 warn 级别日志。<br/>参数说明同 Debug 接口。 | 33| | int Error(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 error 级别日志。<br/>参数说明同 Debug 接口。 | 34| | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 fatal 级别日志。<br/>参数说明同 Debug 接口。 | 35| | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | 功能:检查指定业务领域、TAG、级别的日志是否可以打印。<br/>输入参数:<br/>- domain:指定日志业务领域。<br/>- tag: 指定日志TAG。<br/>- level: 指定日志level。<br/>输出参数:无<br/>返回值:如果指定domain、tag、level日志可以打印则返回true;否则返回false。 | 36| HiLogLabel | struct HiLogLabel | 功能:初始化日志标签参数。<br/>成员参数:<br/>- domain:指定日志业务领域。<br/>- tag: 指定日志TAG。<br/>- level: 指定日志level。 | 37 38 39## 开发实例 40 41 42### C使用示例 43 441. 在.c源文件中,包含hilog头文件: 45 ``` 46 #include "hilog/log.h" 47 ``` 48 49 定义domain、tag: 50 51 ``` 52 #undef LOG_DOMAIN 53 #undef LOG_TAG 54 #define LOG_DOMAIN 0 // 标识业务领域,范围0x0~0xFFFFF 55 #define LOG_TAG "MY_TAG" 56 ``` 57 58 打印日志: 59 60 ``` 61 HILOG_INFO(LOG_CORE, "Failed to visit %{private}s, reason:%{public}d.", url, errno); 62 ``` 63 642. 编译设置,在BUILD.gn里增加子系统SDK依赖: 65 ``` 66 external_deps = [ "hilog_native:libhilog" ] 67 ``` 68 69 70### C++使用示例 71 721. 在.h类定义头文件中,包含hilog头文件: 73 ``` 74 #include "hilog/log.h" 75 ``` 76 77 如果类头文件中需要日志打印,在头文件中类定义起始处 定义 LABEL: 78 79 ``` 80 class MyClass { 81 static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; 82 ...... 83 } 84 ``` 85 86 如果类头文件中没有日志打印,在类实现文件中 定义 LABEL: 87 88 ``` 89 using namespace OHOS::HiviewDFX; 90 static constexpr HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; 91 ``` 92 93 打印日志: 94 95 ``` 96 HiLog::Info(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno); 97 ``` 98 992. 编译设置,在BUILD.gn里增加子系统SDK依赖: 100 ``` 101 external_deps = [ "hiviewdfx:libhilog" ] 102 ``` 103