HarmonyOS NEXT鸿蒙开发:HiLog日志打印 作者:马育民 • 2024-11-21 22:10 • 阅读:10004 # 介绍 在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等) **类比:**相当于 Log4j日志 ### 与 console 比较 HiLog与console的功能类似,可以打印日志,但功能更为强大些,也复杂些 `HiLog` 支持 `domain`、`tag`、`format` 中的 `{private}` 功能 `console` 不支持上面功能 # 权限级别 定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别 ### DEBUG 值:3 详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。 ### INFO 值:4 用于记录业务关键流程节点,可以还原业务的主要运行过程; 用于记录可预料的非正常情况信息,如无网络信号、登录失败等。 这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。 ### WARN 值:5 用于记录较为严重的非预期情况,但是对用户影响不大,应用可以自动恢复或通过简单的操作就可以恢复的问题。 ### ERROR 值:6 应用发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。 ### FATAL 值:7 重大致命异常,表明应用即将崩溃,故障无法恢复。 # 导入模块 ``` import { hilog } from '@kit.PerformanceAnalysisKit'; ``` # 打印日志方法 ## hilog.debug 打印DEBUG级别的日志。DEBUG级别的日志在 **正式发布版本中默认不被打印**,只有在调试版本或打开调试开关的情况下才会打印。 ``` debug(domain: number, tag: string, format: string, ...args: any[]) : void ``` ##### 参数 - domain:类型:number,必填,日志对应的领域标识,范围是`0x0~0xFFFF`。建议开发者在应用内根据需要自定义划分。 - tag:类型:string,必填,指定日志标识,可以为任意字符串,建议用于标识调用所在的类或者业务行为。tag最多为 `31` 字节,超出后会截断,**不建议使用中文字符**,可能出现乱码或者对齐问题。 - format:类型:string,必填,格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,参数需要包含参数类型、隐私标识。 **隐私标识:**分为 `{public}` 和 `{private}`,缺省为 `{private}`。标识 `{public}` 的内容明文输出,标识 `{private}` 的内容以 `` 过滤回显。 **类型:** - `s` 表示字符串 - `d` 表示number类型 - `i` 表示bigint类型 - args:类型:`any[]`,与格式字符串对应的参数列表。参数**数量**、**类型** 必须与格式字符串中的标识一一对应。 #### 例子1 输出一条DEBUG信息: ``` hilog.debug(0x0001, "testTag", "%{public}s World %{private}d", "hello", 3); ``` **解释:** - `%{public}s`:为明文显示的字符串,字符串 `"hello"` 填入 `%{public}s` - `%{private}d`:为隐私的整型数,整型数 `3` 填入 `%{private}d` **打印结果:** ``` 08-05 12:21:47.579 2695 2703 D A00001/testTag: hello World ``` **解释:** - D:表示 `debug` - A00001:表示 `0x0001` ## hilog.info 打印INFO级别的日志。 ``` info(domain: number, tag: string, format: string, ...args: any[]) : void ``` ##### 参数 与 `hilog.debug` 相同 #### 例子 ``` let testObj: Record = { 'name': "Jack", 'age': 22 } let isBol = true; let bigNum = BigInt(1234567890123456789); hilog.info(0x0001, "jsHilogTest", "print object: %{public}s", JSON.stringify(testObj)); hilog.info(0x0001, "jsHilogTest", "private flag: %{private}s %s, print null: %{public}s", "hello", "world", null); hilog.info(0x0001, "jsHilogTest", "print undefined: %{public}s", undefined); hilog.info(0x0001, "jsHilogTest", "print number: %{public}d %{public}i", 123, 456); hilog.info(0x0001, "jsHilogTest", "print bigNum: %{public}d %{public}i", bigNum, bigNum); hilog.info(0x0001, "jsHilogTest", "print boolean: %{public}s", isBol); ``` 打印结果 ``` 08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print object: {"name":"Jack","age":22} 08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: private flag: , print null: null 08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print undefined: undefined 08-09 13:26:29.094 2266 2266 I A00001/jsHilogTest: print number: 123 456 08-09 13:26:29.095 2266 2266 I A00001/jsHilogTest: print bigNum: 1234567890123456768 1234567890123456768 08-09 13:26:29.095 2266 2266 I A00001/jsHilogTest: print boolean: true ``` ## hilog.warn 打印WARN级别的日志。 ``` warn(domain: number, tag: string, format: string, ...args: any[]) : void ``` ##### 参数 与 `hilog.debug` 相同 ## hilog.error 打印ERROR级别的日志。 ``` error(domain: number, tag: string, format: string, ...args: any[]) : void ``` ##### 参数 与 `hilog.debug` 相同 ## hilog.fatal 打印FATAL级别的日志。 ``` fatal(domain: number, tag: string, format: string, ...args: any[]) : void ``` ##### 参数 与 `hilog.debug` 相同 原文出处:http://malaoshi.top/show_1GW5Cub8Mfh.html