_hi_log.md 10.0 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5
# HiLog


HiLog模块实现日志打印功能。

Z
zengyawen 已提交
6

Z
zengyawen 已提交
7 8 9
开发者可以通过使用这些接口实现日志相关功能,输出日志时可以指定日志类型、所属业务领域、日志TAG标识、日志级别等。


Z
zengyawen 已提交
10 11 12 13 14
@syscap SystemCapability.HiviewDFX.HiLog


**自从:**

Z
zengyawen 已提交
15 16 17 18

8


Z
zengyawen 已提交
19
## 汇总
Z
zengyawen 已提交
20 21


Z
zengyawen 已提交
22
### 文件
Z
zengyawen 已提交
23

Z
zengyawen 已提交
24
| 文件名称 | 描述 |
Z
zengyawen 已提交
25
| -------- | -------- |
Z
zengyawen 已提交
26
| [log.h](log_8h.md) | HiLog模块日志接口定义,通过这些接口实现日志打印相关功能。 |
Z
zengyawen 已提交
27 28


Z
zengyawen 已提交
29
### 宏定义
Z
zengyawen 已提交
30

Z
zengyawen 已提交
31
| 宏定义名称 | 描述 |
Z
zengyawen 已提交
32
| -------- | -------- |
Z
zengyawen 已提交
33 34 35 36 37 38 39
| [LOG_DOMAIN](#log_domain)   0 | 日志所对应的业务领域,用于标识业务的子系统、模块。 |
| [LOG_TAG](#log_tag)   NULL | 字符串常量,标识调用所在的类或者业务。 |
| [OH_LOG_DEBUG](#oh_log_debug)(type, ...)   ((void)[OH_LOG_Print](#oh_log_print)((type), LOG_DEBUG, LOG_DOMAIN, LOG_TAG, \__VA_ARGS__)) | DEBUG级别写日志,宏封装接口。 |
| [OH_LOG_INFO](#oh_log_info)(type, ...)   ((void)[OH_LOG_Print](#oh_log_print)((type), LOG_INFO, LOG_DOMAIN, LOG_TAG, \__VA_ARGS__)) | INFO级别写日志,宏封装接口。 |
| [OH_LOG_WARN](#oh_log_warn)(type, ...)   ((void)[OH_LOG_Print](#oh_log_print)((type), LOG_WARN, LOG_DOMAIN, LOG_TAG, \__VA_ARGS__)) | WARN级别写日志,宏封装接口。 |
| [OH_LOG_ERROR](#oh_log_error)(type, ...)   ((void)[OH_LOG_Print](#oh_log_print)((type), LOG_ERROR, LOG_DOMAIN, LOG_TAG, \__VA_ARGS__)) | ERROR级别写日志,宏封装接口。 |
| [OH_LOG_FATAL](#oh_log_fatal)(type, ...)   ((void)HiLogPrint((type), LOG_FATAL, LOG_DOMAIN, LOG_TAG, \__VA_ARGS__)) | FATAL级别写日志,宏封装接口。 |
Z
zengyawen 已提交
40 41


Z
zengyawen 已提交
42
### 枚举
Z
zengyawen 已提交
43

Z
zengyawen 已提交
44
| 枚举名称 | 描述 |
Z
zengyawen 已提交
45
| -------- | -------- |
Z
zengyawen 已提交
46 47
| [LogType](#logtype) { LOG_APP= 0 } | 日志类型。 |
| [LogLevel](#loglevel) { LOG_DEBUG = 3, LOG_INFO = 4, LOG_WARN = 5, LOG_ERROR = 6, LOG_FATAL =7 } | 日志级别。 |
Z
zengyawen 已提交
48 49


Z
zengyawen 已提交
50
### 函数
Z
zengyawen 已提交
51

Z
zengyawen 已提交
52
| 函数名称 | 描述 |
Z
zengyawen 已提交
53
| -------- | -------- |
Z
zengyawen 已提交
54 55
| [OH_LOG_Print](#oh_log_print) ([LogType](#logtype) type, [LogLevel](#loglevel) level, unsigned int domain, const char \*tag, const char \*fmt,...) \_\_attribute\_\_((\_\_format\_\_(os\_log | 写日志接口。 |
| [OH_LOG_IsLoggable](#oh_log_isloggable) (unsigned int domain, const char \*tag, [LogLevel](#loglevel) level) | 检查指定业务领域、TAG、级别的日志是否可以打印。 |
Z
zengyawen 已提交
56 57


Z
zengyawen 已提交
58
## 详细描述
Z
zengyawen 已提交
59 60


Z
zengyawen 已提交
61
## 宏定义说明
Z
zengyawen 已提交
62 63 64 65


### LOG_DOMAIN

Z
zengyawen 已提交
66

Z
zengyawen 已提交
67 68 69 70
```
#define LOG_DOMAIN   0
```

Z
zengyawen 已提交
71
**描述:**
Z
zengyawen 已提交
72 73 74 75 76

日志所对应的业务领域,用于标识业务的子系统、模块。

16进制整数,有效范围0x0~0xFFFF,超过自动截掉高位。

Z
zengyawen 已提交
77 78 79 80
**自从:**

8

Z
zengyawen 已提交
81 82 83

### LOG_TAG

Z
zengyawen 已提交
84

Z
zengyawen 已提交
85 86 87 88
```
#define LOG_TAG   NULL
```

Z
zengyawen 已提交
89
**描述:**
Z
zengyawen 已提交
90 91 92

字符串常量,标识调用所在的类或者业务。

Z
zengyawen 已提交
93 94 95 96
**自从:**

8

Z
zengyawen 已提交
97 98 99

### OH_LOG_DEBUG

Z
zengyawen 已提交
100

Z
zengyawen 已提交
101 102 103 104
```
#define OH_LOG_DEBUG( type,  ... )   ((void)OH_LOG_Print((type), LOG_DEBUG, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

Z
zengyawen 已提交
105
**描述:**
Z
zengyawen 已提交
106 107 108 109 110

DEBUG级别写日志,宏封装接口。

使用时需要先定义日志业务领域、日志TAG,一般在源文件起始处统一定义一次。

Z
zengyawen 已提交
111
**参数:**
Z
zengyawen 已提交
112

Z
zengyawen 已提交
113
| 名称 | 描述 |
Z
zengyawen 已提交
114
| -------- | -------- |
Z
zengyawen 已提交
115 116 117
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |
Z
zengyawen 已提交
118

Z
zengyawen 已提交
119
**参见:**
Z
zengyawen 已提交
120

Z
zengyawen 已提交
121
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
122 123 124 125

**自从:**

8
Z
zengyawen 已提交
126 127 128 129


### OH_LOG_ERROR

Z
zengyawen 已提交
130

Z
zengyawen 已提交
131 132 133 134
```
#define OH_LOG_ERROR( type,  ... )   ((void)OH_LOG_Print((type), LOG_ERROR, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

Z
zengyawen 已提交
135
**描述:**
Z
zengyawen 已提交
136 137 138 139 140

ERROR级别写日志,宏封装接口。

使用时需要先定义日志业务领域、日志TAG,一般在源文件起始处统一定义一次。

Z
zengyawen 已提交
141
**参数:**
Z
zengyawen 已提交
142

Z
zengyawen 已提交
143
| 名称 | 描述 |
Z
zengyawen 已提交
144
| -------- | -------- |
Z
zengyawen 已提交
145 146 147
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |
Z
zengyawen 已提交
148

Z
zengyawen 已提交
149
**参见:**
Z
zengyawen 已提交
150

Z
zengyawen 已提交
151
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
152 153 154 155

**自从:**

8
Z
zengyawen 已提交
156 157 158 159


### OH_LOG_FATAL

Z
zengyawen 已提交
160

Z
zengyawen 已提交
161 162 163 164
```
#define OH_LOG_FATAL( type,  ... )   ((void)HiLogPrint((type), LOG_FATAL, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

Z
zengyawen 已提交
165
**描述:**
Z
zengyawen 已提交
166 167 168 169 170

FATAL级别写日志,宏封装接口。

使用时需要先定义日志业务领域、日志TAG,一般在源文件起始处统一定义一次。

Z
zengyawen 已提交
171
**参数:**
Z
zengyawen 已提交
172

Z
zengyawen 已提交
173
| 名称 | 描述 |
Z
zengyawen 已提交
174
| -------- | -------- |
Z
zengyawen 已提交
175 176 177
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |
Z
zengyawen 已提交
178

Z
zengyawen 已提交
179
**参见:**
Z
zengyawen 已提交
180

Z
zengyawen 已提交
181
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
182 183 184 185

**自从:**

8
Z
zengyawen 已提交
186 187 188 189


### OH_LOG_INFO

Z
zengyawen 已提交
190

Z
zengyawen 已提交
191 192 193 194
```
#define OH_LOG_INFO( type,  ... )   ((void)OH_LOG_Print((type), LOG_INFO, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

Z
zengyawen 已提交
195
**描述:**
Z
zengyawen 已提交
196 197 198 199 200

INFO级别写日志,宏封装接口。

使用时需要先定义日志业务领域、日志TAG,一般在源文件起始处统一定义一次。

Z
zengyawen 已提交
201
**参数:**
Z
zengyawen 已提交
202

Z
zengyawen 已提交
203
| 名称 | 描述 |
Z
zengyawen 已提交
204
| -------- | -------- |
Z
zengyawen 已提交
205 206 207 208 209
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |

**参见:**
Z
zengyawen 已提交
210

Z
zengyawen 已提交
211
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
212 213 214 215

**自从:**

8
Z
zengyawen 已提交
216 217 218 219


### OH_LOG_WARN

Z
zengyawen 已提交
220

Z
zengyawen 已提交
221 222 223 224
```
#define OH_LOG_WARN( type,  ... )   ((void)OH_LOG_Print((type), LOG_WARN, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

Z
zengyawen 已提交
225
**描述:**
Z
zengyawen 已提交
226 227 228 229 230

WARN级别写日志,宏封装接口。

使用时需要先定义日志业务领域、日志TAG,一般在源文件起始处统一定义一次。

Z
zengyawen 已提交
231
**参数:**
Z
zengyawen 已提交
232

Z
zengyawen 已提交
233
| 名称 | 描述 |
Z
zengyawen 已提交
234
| -------- | -------- |
Z
zengyawen 已提交
235 236 237
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |
Z
zengyawen 已提交
238

Z
zengyawen 已提交
239
**参见:**
Z
zengyawen 已提交
240

Z
zengyawen 已提交
241
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
242

Z
zengyawen 已提交
243
**自从:**
Z
zengyawen 已提交
244

Z
zengyawen 已提交
245 246 247 248
8


## 枚举类型说明
Z
zengyawen 已提交
249 250 251 252


### LogLevel

Z
zengyawen 已提交
253

Z
zengyawen 已提交
254 255 256 257
```
enum LogLevel
```

Z
zengyawen 已提交
258
**描述:**
Z
zengyawen 已提交
259 260 261

日志级别。

262 263
该枚举类型用于定义日志级别。

Z
zengyawen 已提交
264
各级别建议使用方式:
265

Z
zengyawen 已提交
266
DEBUG:比INFO级别更详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。DEBUG级别的日志在正式发布版本中默认不会被打印,只有在调试版本或打开调试开关的情况下才会打印。
267

Z
zengyawen 已提交
268
INFO:用来记录业务关键流程节点,可以还原业务的主要运行过程;用来记录非正常情况信息,但这些情况都是可以预期的(如无网络信号、登录失败等)。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。
269 270 271

WARN:发生了较为严重的非预期情况,但是对用户影响不大,程序可以自动恢复或通过简单的操作就可以恢复的问题。

Z
zengyawen 已提交
272
ERROR:程序或功能发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。
273 274

FATAL:重大致命异常,表明程序或功能即将崩溃,故障无法恢复。
Z
zengyawen 已提交
275

Z
zengyawen 已提交
276
| 枚举值 | 描述 |
Z
zengyawen 已提交
277
| -------- | -------- |
Z
zengyawen 已提交
278 279 280 281 282 283 284 285 286
| LOG_DEBUG | DEBUG日志级别,使用OH_LOG_DEBUG接口打印 |
| LOG_INFO | INFO日志级别,使用OH_LOG_INFO接口打印 |
| LOG_WARN | WARN日志级别,使用OH_LOG_WARN接口打印 |
| LOG_ERROR | ERROR日志级别,使用OH_LOG_ERROR接口打印 |
| LOG_FATAL | FATAL日志级别,使用OH_LOG_FATAL接口打印 |

**自从:**

8
Z
zengyawen 已提交
287 288 289 290


### LogType

Z
zengyawen 已提交
291

Z
zengyawen 已提交
292 293 294 295
```
enum LogType
```

Z
zengyawen 已提交
296
**描述:**
Z
zengyawen 已提交
297 298 299 300 301

日志类型。

该枚举类型用于定义应用开发者可以使用的日志类型。当前有应用日志LOG_APP。

Z
zengyawen 已提交
302
| 枚举值 | 描述 |
Z
zengyawen 已提交
303
| -------- | -------- |
Z
zengyawen 已提交
304 305 306 307 308
| LOG_APP | 应用日志 |

**自从:**

8
Z
zengyawen 已提交
309 310


Z
zengyawen 已提交
311
## 函数说明
Z
zengyawen 已提交
312 313 314 315


### OH_LOG_IsLoggable()

Z
zengyawen 已提交
316

Z
zengyawen 已提交
317
```
318
bool OH_LOG_IsLoggable (unsigned int domain, const char * tag, LogLevel level )
Z
zengyawen 已提交
319 320
```

Z
zengyawen 已提交
321
**描述:**
Z
zengyawen 已提交
322 323 324

检查指定业务领域、TAG、级别的日志是否可以打印。

Z
zengyawen 已提交
325
**参数:**
Z
zengyawen 已提交
326

Z
zengyawen 已提交
327
| 名称 | 描述 |
Z
zengyawen 已提交
328
| -------- | -------- |
Z
zengyawen 已提交
329 330 331
| domain | 指定日志业务领域。 |
| tag | 指定日志TAG。 |
| level | 指定日志level。 |
Z
zengyawen 已提交
332

Z
zengyawen 已提交
333
**返回:**
Z
zengyawen 已提交
334 335 336

如果指定domain、tag、level日志可以打印则返回true;否则返回false。

Z
zengyawen 已提交
337 338 339 340
**自从:**

8

Z
zengyawen 已提交
341 342 343

### OH_LOG_Print()

Z
zengyawen 已提交
344

Z
zengyawen 已提交
345 346 347 348
```
int OH_LOG_Print (LogType type, LogLevel level, unsigned int domain, const char * tag, const char * fmt,  ... )
```

Z
zengyawen 已提交
349
**描述:**
Z
zengyawen 已提交
350 351 352 353 354

写日志接口。

指定日志类型、日志级别、业务领域、TAG,按照类printf格式类型和隐私指示确定需要输出的变参。

Z
zengyawen 已提交
355
**参数:**
Z
zengyawen 已提交
356

Z
zengyawen 已提交
357
| 名称 | 描述 |
Z
zengyawen 已提交
358
| -------- | -------- |
Z
zengyawen 已提交
359 360 361 362 363 364
| type | 日志类型,三方应用日志类型为LOG_APP。 |
| level | 日志级别,日志级别包括LOG_DEBUG、LOG_INFO、LOG_WARN、LOG_ERROR、LOG_FATAL。 |
| domain | 日志业务领域,16进制整数,范围0x0~0xFFFF。 |
| tag | 日志TAG,字符串,标识调用所在的类或者业务。 |
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 |
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 |
Z
zengyawen 已提交
365

Z
zengyawen 已提交
366
**返回:**
Z
zengyawen 已提交
367 368

大于等于0表示成功;小于0表示失败。
Z
zengyawen 已提交
369 370 371 372

**自从:**

8