HarmonyOS开发实战:小分享-使用hilog实现Ability生命周期日志埋点
前言在生产环境中App 的启动崩溃、页面跳转失败等问题往往只能靠日志排查。HarmonyOS 提供了hilog日志系统支持分级、过滤、脱敏。本篇以小分享 App 的EntryAbility为例演示如何用hilog建立规范的日志埋点体系。详细 API 可参考 HarmonyOS hilog 官方文档。一、hilog 的导入与初始化1.1 导入语句小分享 App 的EntryAbility.ets开头如下import { hilog } from kit.PerformanceAnalysisKit; const DOMAIN 0x0000;1.2 关键点说明关键点说明如下hilog位于kit.PerformanceAnalysisKit套件中按需导入即可DOMAIN是日志域标识通常用 16 进制整数取值范围0x0000 ~ 0xFFFF一个 App 内不同模块可以定义不同的DOMAIN便于过滤二、hilog 的五个 API2.1 API 列表HarmonyOS 提供了五个hilogAPI分别对应不同的日志级别API级别典型场景hilog.debugD开发调试发布版本会被过滤hilog.infoI关键流程节点hilog.warnW可恢复的异常hilog.errorE不可恢复的异常hilog.fatalF致命错误会导致进程退出2.2 小分享 App 的使用小分享 App 主要使用info和errorhilog.info(DOMAIN, testTag, %{public}s, Ability onCreate); hilog.error(DOMAIN, testTag, Failed to set colorMode. Cause: %{public}s, JSON.stringify(err));三、format 字符串与脱敏3.1 隐私修饰符hilog的format参数遵循 C 风格占位符但增加了隐私修饰符修饰符含义适用场景%{public}s明文输出调试信息、状态描述%{private}s自动脱敏显示为 ***用户 ID、手机号、Token%{public}d明文整型计数器、版本号3.2 正确示例正确示例代码如下hilog.info(DOMAIN, LoginTag, userId: %{private}s, loginCount: %{public}d, userId, count);输出形如userId: *** , loginCount: 53.3 错误示例错误示例代码如下hilog.info(DOMAIN, LoginTag, userId: userId); // ❌ 字符串拼接绕过脱敏提示字符串拼接会绕过脱敏机制造成敏感信息泄漏必须使用占位符格式化。四、为生命周期埋点4.1 完整埋点代码小分享 App 在每个生命周期回调中都打了日志便于还原执行时序onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { try { this.context.getApplicationContext().setColorMode( ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET ); } catch (err) { hilog.error(DOMAIN, testTag, Failed to set colorMode: %{public}s, JSON.stringify(err)); } hilog.info(DOMAIN, testTag, %{public}s, Ability onCreate); } onWindowStageCreate(windowStage: window.WindowStage): void { hilog.info(DOMAIN, testTag, %{public}s, Ability onWindowStageCreate); windowStage.loadContent(pages/Index, (err) { if (err.code) { hilog.error(DOMAIN, testTag, Failed to load: %{public}s, JSON.stringify(err)); return; } hilog.info(DOMAIN, testTag, %{public}s, Succeeded in loading the content.); }); } onForeground(): void { hilog.info(DOMAIN, testTag, %{public}s, Ability onForeground); } onBackground(): void { hilog.info(DOMAIN, testTag, %{public}s, Ability onBackground); }4.2 埋点策略小分享 App 的埋点策略如下每个 Ability 生命周期回调都打info级日志异常分支打error级日志启动耗时通过info时间戳推算关键业务节点如分享成功打info日志五、查看日志5.1 方式 1DevEco Studio HiLog 面板DevEco Studio 底部的HiLog面板支持按 tag、domain、级别过滤。这是开发阶段最常用的查看方式。5.2 方式 2hdc 命令行通过hdc命令行可以查看设备日志hdc shell hilog -T testTag -L I参数说明如下-T按 tag 过滤-L按级别过滤D/I/W/E/F-D按 domain 过滤5.3 方式 3保存到文件通过以下命令可以将日志保存到设备文件hdc shell hilog -r hdc shell hilog -w start -t 30六、hilog 最佳实践6.1 统一 tag 命名建议采用统一的 tag 命名规范AbilityTag - Ability 生命周期 RouterTag - 路由跳转 NetworkTag - 网络请求 DbTag - 数据库操作 UiTag - UI 渲染6.2 避免高频日志在ForEach循环中打info日志会迅速填满缓冲区建议改为debug或采样输出。6.3 务必捕获错误码异步回调中的err.code是排查问题的关键必须打印windowStage.loadContent(pages/Index, (err) { if (err.code) { hilog.error(DOMAIN, testTag, err.code: %{public}d, err.msg: %{public}s, err.code, JSON.stringify(err)); return; } });6.4 发布版本关闭 debug通过hilog.setLogLevel设置全局最低级别避免性能损耗hilog.setLogLevel(DOMAIN, hilog.LogLevel.WARN);七、本篇核心知识点7.1 hilog 核心 APIhilog 核心 API 总结如下hilog.debug/info/warn/error/fatal五个级别DOMAIN标识模块便于过滤tag标识调用方便于定位format用%{public}s/%{private}s控制脱敏7.2 实战开发要点实战开发中需要重点关注以下几个要点日志要在关键节点埋点便于还原执行时序敏感信息必须使用%{private}s脱敏发布版本应关闭debug级日志异步回调的错误码必须打印总结本文详细讲解了 HarmonyOS hilog 日志系统的使用方法结合小分享 App 的EntryAbility生命周期埋点演示了日志分级、脱敏、查看的完整流程。下一篇我们将深入module.json5这个模块级配置文件解析入口 Ability 声明的每个字段。附录完整实现细节1. 核心 API 参考API作用说明本文涉及的核心 API功能实现参见华为官方文档2. 完整代码示例// 核心功能代码 // 详见正文中的完整实现3. 常见问题排查问题原因解决方案编译错误import 路径错误检查路径和 API 版本运行时异常参数不合法使用 try/catch 捕获性能问题主线程耗时操作使用异步 API4. 最佳实践错误处理完善使用 try/catch 包裹资源及时释放避免内存泄漏异步操作使用 async/await权限配置完整按需申请5. 完整代码文件索引文件路径说明本文涉及的代码文件见正文6. 实现要点总结核心实现要点API 的正确使用方法和参数说明完整的代码实现流程常见问题的排查方案性能优化和安全建议7. 总结本文详细讲解了小分享 App 中对应功能的完整实现。通过本文的学习读者可以掌握 HarmonyOS 开发的核心 API 使用方法和最佳实践。开发注意事项1. API 版本兼容性确保使用的 API 在目标 SDK 版本中可用。不同版本的 HarmonyOS 可能对 API 的支持有所不同建议查阅官方文档确认。2. 权限配置根据功能需求配置相应的系统权限。权限在 module.json5 中声明运行时通过 abilityAccessCtrl 申请。3. 错误处理所有异步操作使用 try/catch 包裹确保异常不会导致应用崩溃。错误信息通过 hilog 输出便于调试。4. 资源释放使用完毕后及时释放系统资源避免内存泄漏。例如文件操作后关闭文件句柄数据库操作后关闭 ResultSet。5. 性能优化避免在主线程执行耗时操作使用异步 API 处理耗时任务。大量数据渲染时使用 LazyForEach 懒加载。完整代码文件索引文件路径说明本文涉及的代码文件见正文核心 API 参考API/组件用途文档链接文中涉及的 API核心功能华为官方文档总结本文详细讲解了小分享 App 中对应功能的完整实现涵盖 API 使用、代码示例、常见问题、性能优化等核心知识点。通过本文的学习读者可以掌握 HarmonyOS 开发的完整流程。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力