_hi_log.md 10.3 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
# HiLog


## **Overview**

**Description:**

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

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

\@syscap SystemCapability.HiviewDFX.HiLog

**Since:**

8


## **Summary**


### Files

  | File Name | Description | 
| -------- | -------- |
| [log.h](log_8h.md) | HiLog模块日志接口定义,通过这些接口实现日志打印相关功能。 | 


### Macros

  | Macro Name and Value | Description | 
| -------- | -------- |
| LOG_DOMAIN   0 | 日志所对应的业务领域,用于标识业务的子系统、模块。 | 
| LOG_TAG   NULL | 字符串常量,标识调用所在的类或者业务。 | 
| OH_LOG_DEBUG(type, ...)   ((void)OH_LOG_Print((type), LOG_DEBUG, LOG_DOMAIN, LOG_TAG, __VA_ARGS__)) | DEBUG级别写日志,宏封装接口。 | 
| OH_LOG_INFO(type, ...)   ((void)OH_LOG_Print((type), LOG_INFO, LOG_DOMAIN, LOG_TAG, __VA_ARGS__)) | INFO级别写日志,宏封装接口。 | 
| OH_LOG_WARN(type, ...)   ((void)OH_LOG_Print((type), LOG_WARN, LOG_DOMAIN, LOG_TAG, __VA_ARGS__)) | WARN级别写日志,宏封装接口。 | 
| OH_LOG_ERROR(type, ...)   ((void)OH_LOG_Print((type), LOG_ERROR, LOG_DOMAIN, LOG_TAG, __VA_ARGS__)) | ERROR级别写日志,宏封装接口。 | 
| OH_LOG_FATAL(type, ...)   ((void)HiLogPrint((type), LOG_FATAL, LOG_DOMAIN, LOG_TAG, __VA_ARGS__)) | FATAL级别写日志,宏封装接口。 | 


### Enumerations

  | Enumeration Name | Description | 
| -------- | -------- |
| LogType { LOG_APP = 0 } | 日志类型。 | 
| LogLevel {   LOG_DEBUG = 3, LOG_INFO = 4, LOG_WARN = 5, LOG_ERROR = 6,   LOG_FATAL = 7 } | 日志级别。 | 


### Functions

  | Function | Description | 
| -------- | -------- |
| OH_LOG_Print&nbsp;(LogType&nbsp;type,&nbsp;LogLevel&nbsp;level,&nbsp;unsigned&nbsp;int&nbsp;domain,&nbsp;const&nbsp;char&nbsp;\*tag,&nbsp;const&nbsp;char&nbsp;\*fmt,...)&nbsp;__attribute__((__format__(os_log | int<br/>写日志接口。 | 
| OH_LOG_IsLoggable&nbsp;(unsigned&nbsp;int&nbsp;domain,&nbsp;const&nbsp;char&nbsp;\*tag,&nbsp;LogLevel&nbsp;level) | int&nbsp;bool<br/>检查指定业务领域、TAG、级别的日志是否可以打印。 | 


## **Details**


## **Macro Definition**


### LOG_DOMAIN

  
```
#define LOG_DOMAIN   0
```

**Description:**

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

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


### LOG_TAG

  
```
#define LOG_TAG   NULL
```

**Description:**

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


### OH_LOG_DEBUG

  
```
#define OH_LOG_DEBUG( type,  ... )   ((void)OH_LOG_Print((type), LOG_DEBUG, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

**Description:**

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

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
107
| type | 日志类型,三方应用日志类型为LOG_APP。 | 
Z
zengyawen 已提交
108 109 110 111 112
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 | 
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 | 

**See also:**

113
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132


### OH_LOG_ERROR

  
```
#define OH_LOG_ERROR( type,  ... )   ((void)OH_LOG_Print((type), LOG_ERROR, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

**Description:**

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

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
133
| type | 日志类型,三方应用日志类型为LOG_APP。 | 
Z
zengyawen 已提交
134 135 136 137 138
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 | 
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 | 

**See also:**

139
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164


### OH_LOG_FATAL

  
```
#define OH_LOG_FATAL( type,  ... )   ((void)HiLogPrint((type), LOG_FATAL, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

**Description:**

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

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
| type | 日志类型,三方应用日志类型为LOG_APP。 | 
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 | 
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 | 

**See also:**

165
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190


### OH_LOG_INFO

  
```
#define OH_LOG_INFO( type,  ... )   ((void)OH_LOG_Print((type), LOG_INFO, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

**Description:**

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

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
| type | 日志类型,三方应用日志类型为LOG_APP。 | 
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 | 
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 | 

**See also:**

191
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215

### OH_LOG_WARN

  
```
#define OH_LOG_WARN( type,  ... )   ((void)OH_LOG_Print((type), LOG_WARN, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))
```

**Description:**

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

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
| type | 日志类型,三方应用日志类型为LOG_APP。 | 
| fmt | 格式化字符串,基于类printf格式的增强,支持隐私参数标识,即在格式字符串每个参数中符号后类型前增加{public}、{private}标识。 | 
| ... | 与格式字符串里参数类型对应的参数列表,参数数目、参数类型必须与格式字符串中的标识一一对应。 | 

**See also:**

216
[OH_LOG_Print](#oh_log_print)
Z
zengyawen 已提交
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232


## **Enumeration Type**


### LogLevel

  
```
enum LogLevel
```

**Description:**

日志级别。

233 234 235 236 237 238 239 240 241 242 243 244 245
该枚举类型用于定义日志级别。

各级别建议使用方式: 

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

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

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

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

FATAL:重大致命异常,表明程序或功能即将崩溃,故障无法恢复。
Z
zengyawen 已提交
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327

  | Enumerator | Description | 
| -------- | -------- |
| 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接口打印 | 


### LogType

  
```
enum LogType
```

**Description:**

日志类型。

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

  | Enumerator | Description | 
| -------- | -------- |
| LOG_APP | 应用日志 | 


## **Function**


### OH_LOG_IsLoggable()

  
```
int bool OH_LOG_IsLoggable (unsigned int domain, const char * tag, LogLevel level )
```

**Description:**

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

**Parameters:**

  | Name | Description | 
| -------- | -------- |
| domain | 指定日志业务领域。 | 
| tag | 指定日志TAG。 | 
| level | 指定日志level。 | 

**Returns:**

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


### OH_LOG_Print()

  
```
int OH_LOG_Print (LogType type, LogLevel level, unsigned int domain, const char * tag, const char * fmt,  ... )
```

**Description:**

写日志接口。

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

**Parameters:**

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

**Returns:**

大于等于0表示成功;小于0表示失败。