1e41f4b71Sopenharmony_ci# @ohos.hilog (HiLog日志打印) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_cihilog日志系统,使应用/服务可以按照指定级别、标识和格式字符串输出日志内容,帮助开发者了解应用/服务的运行状态,更好地调试程序。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 导入模块 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```js 12e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## hilog.isLoggable 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciisLoggable(domain: number, tag: string, level: LogLevel) : boolean 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci在打印日志前调用该接口,用于检查指定领域标识、日志标识和级别的日志是否可以打印。 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**参数:** 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 28e41f4b71Sopenharmony_ci| ------ | --------------------- | ---- | ------------------------------------------------------------ | 29e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 30e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。 | 31e41f4b71Sopenharmony_ci| level | [LogLevel](#loglevel) | 是 | 日志级别。 | 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**返回值:** 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci| 类型 | 说明 | 36e41f4b71Sopenharmony_ci| ------- | ------------------------------------------------------------ | 37e41f4b71Sopenharmony_ci| boolean | 如果返回true,则该领域标识、日志标识和级别的日志可以打印,否则不能打印。 | 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**示例:** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci```js 42e41f4b71Sopenharmony_cihilog.isLoggable(0x0001, "testTag", hilog.LogLevel.INFO); 43e41f4b71Sopenharmony_ci``` 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci## LogLevel 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci日志级别。 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 54e41f4b71Sopenharmony_ci| ----- | ------ | ------------------------------------------------------------ | 55e41f4b71Sopenharmony_ci| DEBUG | 3 | 详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。 | 56e41f4b71Sopenharmony_ci| INFO | 4 | 用于记录业务关键流程节点,可以还原业务的主要运行过程;<br/>用于记录可预料的非正常情况信息,如无网络信号、登录失败等。<br/>这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。 | 57e41f4b71Sopenharmony_ci| WARN | 5 | 用于记录较为严重的非预期情况,但是对用户影响不大,应用可以自动恢复或通过简单的操作就可以恢复的问题。 | 58e41f4b71Sopenharmony_ci| ERROR | 6 | 应用发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。 | 59e41f4b71Sopenharmony_ci| FATAL | 7 | 重大致命异常,表明应用即将崩溃,故障无法恢复。 | 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci## hilog.debug 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_cidebug(domain: number, tag: string, format: string, ...args: any[]) : void 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci打印DEBUG级别的日志。 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciDEBUG级别的日志在正式发布版本中默认不被打印,只有在调试版本或打开调试开关的情况下才会打印。 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**参数:** 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 76e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 77e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 78e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。 | 79e41f4b71Sopenharmony_ci| format | string | 是 | 格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。<br>隐私标识分为{public}和{private},缺省为{private}。标识{public}的内容明文输出,标识{private}的内容以\<private>过滤回显。 | 80e41f4b71Sopenharmony_ci| args | any[] | 否 | 与格式字符串format对应的可变长度参数列表。参数数目、参数类型必须与格式字符串中的标识一一对应。 | 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci**示例:** 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci输出一条DEBUG信息,格式字符串为`"%{public}s World %{private}d"`。其中变参`%{public}s`为明文显示的字符串;`%{private}d`为隐私的整型数。 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci```js 87e41f4b71Sopenharmony_cihilog.debug(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); 88e41f4b71Sopenharmony_ci``` 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci字符串`"hello"`填入`%{public}s`,整型数`3`填入`%{private}d`,输出日志: 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci``` 93e41f4b71Sopenharmony_ci08-05 12:21:47.579 2695 2703 D A00001/testTag: hello World <private> 94e41f4b71Sopenharmony_ci``` 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci## hilog.info 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ciinfo(domain: number, tag: string, format: string, ...args: any[]) : void 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci打印INFO级别的日志。 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**参数:** 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 109e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 110e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 111e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。 | 112e41f4b71Sopenharmony_ci| format | string | 是 | 格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。<br/>隐私标识分为{public}和{private},缺省为{private}。标识{public}的内容明文输出,标识{private}的内容以\<private>过滤回显。 | 113e41f4b71Sopenharmony_ci| args | any[] | 否 | 与格式字符串format对应的可变长度参数列表。参数数目、参数类型必须与格式字符串中的标识一一对应。 | 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci**示例:** 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci输出一条INFO信息,格式字符串为`"%{public}s World %{private}d"`。其中变参`%{public}s`为明文显示的字符串;`%{private}d`为隐私的整型数。 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci```js 120e41f4b71Sopenharmony_cihilog.info(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); 121e41f4b71Sopenharmony_ci``` 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci字符串`"hello"`填入`%{public}s`,整型数`3`填入`%{private}d`,输出日志: 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci``` 126e41f4b71Sopenharmony_ci08-05 12:21:47.579 2695 2703 I A00001/testTag: hello World <private> 127e41f4b71Sopenharmony_ci``` 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci## hilog.warn 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ciwarn(domain: number, tag: string, format: string, ...args: any[]) : void 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci打印WARN级别的日志。 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ci**参数:** 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 142e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 143e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 144e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。 | 145e41f4b71Sopenharmony_ci| format | string | 是 | 格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。<br/>隐私标识分为{public}和{private},缺省为{private}。标识{public}的内容明文输出,标识{private}的内容以\<private>过滤回显。 | 146e41f4b71Sopenharmony_ci| args | any[] | 否 | 与格式字符串format对应的可变长度参数列表。参数数目、参数类型必须与格式字符串中的标识一一对应。 | 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**示例:** 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci输出一条WARN信息,格式字符串为`"%{public}s World %{private}d"`。其中变参`%{public}s`为明文显示的字符串;`%{private}d`为隐私的整型数。 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci```js 153e41f4b71Sopenharmony_cihilog.warn(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); 154e41f4b71Sopenharmony_ci``` 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci字符串`"hello"`填入`%{public}s`,整型数`3`填入`%{private}d`,输出日志: 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci``` 159e41f4b71Sopenharmony_ci08-05 12:21:47.579 2695 2703 W A00001/testTag: hello World <private> 160e41f4b71Sopenharmony_ci``` 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci## hilog.error 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_cierror(domain: number, tag: string, format: string, ...args: any[]) : void 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci打印ERROR级别的日志。 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**参数:** 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 175e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 176e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 177e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。 tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。| 178e41f4b71Sopenharmony_ci| format | string | 是 | 格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。<br/>隐私标识分为{public}和{private},缺省为{private}。标识{public}的内容明文输出,标识{private}的内容以\<private>过滤回显。 | 179e41f4b71Sopenharmony_ci| args | any[] | 否 | 与格式字符串format对应的可变长度参数列表。参数数目、参数类型必须与格式字符串中的标识一一对应。 | 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**示例:** 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci输出一条ERROR信息,格式字符串为`"%{public}s World %{private}d"`。其中变参`%{public}s`为明文显示的字符串;`%{private}d`为隐私的整型数。 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci```js 186e41f4b71Sopenharmony_cihilog.error(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); 187e41f4b71Sopenharmony_ci``` 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci字符串`"hello"`填入`%{public}s`,整型数`3`填入`%{private}d`,输出日志: 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci``` 192e41f4b71Sopenharmony_ci08-05 12:21:47.579 2695 2703 E A00001/testTag: hello World <private> 193e41f4b71Sopenharmony_ci``` 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci## hilog.fatal 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_cifatal(domain: number, tag: string, format: string, ...args: any[]) : void 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci打印FATAL级别的日志。 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.HiviewDFX.HiLog 204e41f4b71Sopenharmony_ci 205e41f4b71Sopenharmony_ci**参数:** 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 208e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 209e41f4b71Sopenharmony_ci| domain | number | 是 | 日志对应的领域标识,范围是0x0~0xFFFF。<br/>建议开发者在应用内根据需要自定义划分。 | 210e41f4b71Sopenharmony_ci| tag | string | 是 | 指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。 | 211e41f4b71Sopenharmony_ci| format | string | 是 | 格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。<br/>隐私标识分为{public}和{private},缺省为{private}。标识{public}的内容明文输出,标识{private}的内容以\<private>过滤回显。 | 212e41f4b71Sopenharmony_ci| args | any[] | 否 | 与格式字符串format对应的可变长度参数列表。参数数目、参数类型必须与格式字符串中的标识一一对应。 | 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**示例:** 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci输出一条FATAL信息,格式字符串为`"%{public}s World %{private}d"`。其中变参`%{public}s`为明文显示的字符串;`%{private}d`为隐私的整型数。 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci```js 219e41f4b71Sopenharmony_cihilog.fatal(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); 220e41f4b71Sopenharmony_ci``` 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci字符串`"hello"`填入`%{public}s`,整型数`3`填入`%{private}d`,输出日志: 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci``` 225e41f4b71Sopenharmony_ci08-05 12:21:47.579 2695 2703 F A00001/testTag: hello World <private> 226e41f4b71Sopenharmony_ci``` 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci## 参数格式符 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci上述接口中,日志打印的格式化参数需按照如下格式打印: 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci%{[private flag]}specifier 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci| 隐私标识符(private flag) | 说明 | 235e41f4b71Sopenharmony_ci| ------------ | ---- | 236e41f4b71Sopenharmony_ci| 无 | 缺省值默认为private,不打印明文参数。 | 237e41f4b71Sopenharmony_ci| private | 隐私参数类型,不打印明文参数。 | 238e41f4b71Sopenharmony_ci| public | 明文显示参数。 | 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci| 格式说明符(specifier) | 说明 | 示例 | 241e41f4b71Sopenharmony_ci| ------------ | ---- | ---- | 242e41f4b71Sopenharmony_ci| d/i | 支持打印number和bigint类型。 | 123 | 243e41f4b71Sopenharmony_ci| s | 支持打印string undefined bool 和null类型。 | "123" | 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci**示例:** 246e41f4b71Sopenharmony_ci```js 247e41f4b71Sopenharmony_cilet testObj: Record<string, string | number> = { 248e41f4b71Sopenharmony_ci 'name': "Jack", 249e41f4b71Sopenharmony_ci 'age': 22 250e41f4b71Sopenharmony_ci} 251e41f4b71Sopenharmony_cilet isBol = true; 252e41f4b71Sopenharmony_cilet bigNum = BigInt(1234567890123456789); 253e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "print object: %{public}s", JSON.stringify(testObj)); 254e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "private flag: %{private}s %s, print null: %{public}s", "hello", "world", null); 255e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "print undefined: %{public}s", undefined); 256e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "print number: %{public}d %{public}i", 123, 456); 257e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "print bigNum: %{public}d %{public}i", bigNum, bigNum); 258e41f4b71Sopenharmony_cihilog.info(0x0001, "jsHilogTest", "print boolean: %{public}s", isBol); 259e41f4b71Sopenharmony_ci``` 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ci打印结果 262e41f4b71Sopenharmony_ci``` 263e41f4b71Sopenharmony_ci08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print object: {"name":"Jack","age":22} 264e41f4b71Sopenharmony_ci08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: private flag: <private> <private>, print null: null 265e41f4b71Sopenharmony_ci08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print undefined: undefined 266e41f4b71Sopenharmony_ci08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print number: 123 456 267e41f4b71Sopenharmony_ci08-09 13:26:29.095 2266 2266 I A00001/jsHilogTest: print bigNum: 1234567890123456768 1234567890123456768 268e41f4b71Sopenharmony_ci08-09 13:26:29.095 2266 2266 I A00001/jsHilogTest: print boolean: true 269e41f4b71Sopenharmony_ci```