鸿蒙三方库 | harmony-utils之LogUtil日志输出与级别控制详解
·
前言
日志是开发调试和问题排查的重要工具。@pura/harmony-utils 的 LogUtil 封装了日志输出方法,支持不同日志级别和标签管理,让日志输出更加规范和可控。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、LogUtil核心API
LogUtil 提供了以下日志输出方法:
| 方法 | 说明 | 参数 | 使用场景 |
|---|---|---|---|
debug(tag, msg) |
输出DEBUG级别日志 | tag, msg | 调试信息 |
info(tag, msg) |
输出INFO级别日志 | tag, msg | 一般信息 |
warn(tag, msg) |
输出WARN级别日志 | tag, msg | 警告信息 |
error(tag, msg) |
输出ERROR级别日志 | tag, msg | 错误信息 |
setLogLevel(level) |
设置日志级别 | level | 级别控制 |
1.1 核心特性
- 简洁易用:封装复杂API为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 级别控制:支持动态设置日志输出级别
1.2 日志级别对照
| 级别 | 常量 | 说明 | 生产环境 |
|---|---|---|---|
| DEBUG | LogLevel.DEBUG | 调试信息 | 不输出 |
| INFO | LogLevel.INFO | 一般信息 | 可选 |
| WARN | LogLevel.WARN | 警告信息 | 输出 |
| ERROR | LogLevel.ERROR | 错误信息 | 输出 |
二、完整使用步骤
2.1 安装依赖
ohpm install @pura/harmony-utils
2.2 输出不同级别日志
import { LogUtil } from '@pura/harmony-utils';
Button('输出DEBUG日志')
.width('100%')
.onClick(() => {
LogUtil.debug('MyApp', '这是一条调试日志');
this.result = 'DEBUG日志已输出 📋';
})
Button('输出INFO日志')
.width('100%')
.onClick(() => {
LogUtil.info('MyApp', '这是一条信息日志');
this.result = 'INFO日志已输出 ℹ️';
})
Button('输出ERROR日志')
.width('100%')
.onClick(() => {
LogUtil.error('MyApp', '这是一条错误日志');
this.result = 'ERROR日志已输出 ❌';
})
2.3 设置日志级别
Button('设置日志级别')
.width('100%')
.onClick(() => {
LogUtil.setLogLevel(LogLevel.INFO);
this.result = '日志级别已设为INFO\n低于INFO的日志将不输出';
})

三、完整页面示例
import { LogUtil } from '@pura/harmony-utils';
@Entry
@Component
struct LogDemo {
@State result: string = '';
build() {
Column({ space: 12 }) {
Button('输出全部级别日志').width('100%').onClick(() => {
LogUtil.debug('Demo', '调试信息');
LogUtil.info('Demo', '一般信息');
LogUtil.warn('Demo', '警告信息');
LogUtil.error('Demo', '错误信息');
this.result = '四级日志已输出\n查看HiLog查看日志';
});
Text(this.result).fontSize(14).fontColor('#333333')
}
.padding(16)
}
}
四、进阶用法
4.1 日志工具类封装
import { LogUtil } from '@pura/harmony-utils';
class AppLogger {
private static TAG = 'MyApp';
static d(msg: string): void {
LogUtil.debug(AppLogger.TAG, msg);
}
static i(msg: string): void {
LogUtil.info(AppLogger.TAG, msg);
}
static w(msg: string): void {
LogUtil.warn(AppLogger.TAG, msg);
}
static e(msg: string): void {
LogUtil.error(AppLogger.TAG, msg);
}
}
4.2 条件日志输出
function logIf(condition: boolean, tag: string, msg: string): void {
if (condition) {
LogUtil.info(tag, msg);
}
}
五、注意事项
- 标签规范:建议使用统一的标签命名规范
- 级别控制:生产环境建议设置为WARN或ERROR
- 敏感信息:不要在日志中输出敏感信息
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - 日志量:避免在高频方法中输出大量日志
六、常见问题
Q1: 日志在HiLog中看不到?
检查日志级别设置,确保当前级别允许输出。同时检查HiLog的过滤条件。
Q2: setLogLevel()设置后不生效?
确认设置时机是否正确,建议在应用启动时设置。
Q3: 如何查看日志?
使用DevEco Studio的HiLog工具,或通过 hdc hilog 命令查看。
Q4: 日志输出影响性能吗?
大量日志输出会影响性能,生产环境建议设置较高级别。




总结
LogUtil 的日志输出方法为开发调试提供了规范化支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用日志级别和标签,可以提高开发效率和问题排查速度。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。
更多推荐




所有评论(0)