前言

日志是开发调试和问题排查的重要工具。@pura/harmony-utilsLogUtil 封装了日志输出方法,支持不同日志级别和标签管理,让日志输出更加规范和可控。本文将从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);
  }
}

五、注意事项

  1. 标签规范:建议使用统一的标签命名规范
  2. 级别控制:生产环境建议设置为WARN或ERROR
  3. 敏感信息:不要在日志中输出敏感信息
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 日志量:避免在高频方法中输出大量日志

六、常见问题

Q1: 日志在HiLog中看不到?

检查日志级别设置,确保当前级别允许输出。同时检查HiLog的过滤条件。

Q2: setLogLevel()设置后不生效?

确认设置时机是否正确,建议在应用启动时设置。

Q3: 如何查看日志?

使用DevEco Studio的HiLog工具,或通过 hdc hilog 命令查看。

Q4: 日志输出影响性能吗?

大量日志输出会影响性能,生产环境建议设置较高级别。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

LogUtil 的日志输出方法为开发调试提供了规范化支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用日志级别和标签,可以提高开发效率和问题排查速度。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐