基于 hilog类 封装 日志工具 Logger类

162 阅读1分钟

1. 基本使用

HiLog 中定义了 DEBUG、INFO、WARN、ERROR、FATAL 五种日志级别

function debug(domain: number, tag: string, format: string, ...args: any[]): void;
function info(domain: number, tag: string, format: string, ...args: any[]): void;
function warn(domain: number, tag: string, format: string, ...args: any[]): void;
function error(domain: number, tag: string, format: string, ...args: any[]): void;
function fatal(domain: number, tag: string, format: string, ...args: any[]): void;
function isLoggable(domain: number, tag: string, level: LogLevel): boolean;
  • 参数 domain:用于指定输出日志所对应的业务领域,取值范围为 0x0000~0xFFFF,开发者可以根据需要进行自定义。
  • 参数 tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。
  • 参数 format:格式字符串,用于日志的格式化输出。 %{public}s 字符串 %{public}d 数字
  • 参数 args:可以为0个或多个参数,可以为 0个或多个参数,是格式字符串中参数类型对应的参数列表。

2. 日志工具类封装 Logger

// 使用 hilog 封装 Logger
import { hilog } from '@kit.PerformanceAnalysisKit'

class Logger {
  private domain: number // 十六进制格式的输出业务格式
  private tag: string //  指定的标识 (自动的标识)
  private format: string = '%{public}s, %{public}s' //  格式化方式

  constructor(domain: number, tag: string) {
    this.domain = domain
    this.tag = tag
  }

  // 调试
  debug(...args: string[]) {
    this.formatArg(args)
    hilog.debug(this.domain, this.tag, this.format, args)
  }

  // 输出
  info(...args: string[]) {
    this.formatArg(args)
    hilog.info(this.domain, this.tag, this.format, args)
  }

  // 错误
  error(...args: string[]) {
    this.formatArg(args)
    hilog.error(this.domain, this.tag, this.format, args)
  }

  // 警告
  warn(...args: string[]) {
    this.formatArg(args)
    hilog.warn(this.domain, this.tag, this.format, args)
  }

  // 优化字符显示状态
  private formatArg(args: string[]) {
    this.format = args.length > 1 ? '%{public}s, %{public}s' : '%{public}s'
  }
}

// 导出 logger实例化对象
export const logger = new Logger(0x2004, 'wannaLog')

console 和 hilog 对比

  1. console 是基本 hilog 的封装 默认的 domian, tag 分别为 A03d00, JSAPP
  2. hilog 比 console 更高级一些, 更详细的格式化, 过滤等日志信息功能, 更加丰富一下, 可以满足更复杂的应用需求