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```