HarmonyOS NEXT开发进阶(十五):日志打印 hilog 与 console.log 的区别

发布于:2025-03-31 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、前言

在日常开发阶段,日志打印是调试程序非常常用的操作,在鸿蒙的官方文档中介绍了hilog这种方式,前端转过来的开发者发现console.log也可以进行日志打印,而且看起来好像更加简单方便。

那么,为何鸿蒙官方还要力荐hilog这种方式日志打印方式呢?console.loghilog究竟有什么区别?

二、两者区别对比

首先要说的是console.loghilog都有infodebugwarnerror等几个打印日志的方法,代表不同的日志级别。

接下来分别看一下两者打印相同内容时的区别:

hilog.debug(0x0001, "testTag", "hello world");
console.debug('hello world');

在这里插入图片描述

从执行结果后半部分来看两者好像没有什么区别,但前半部分略有不同。hilog打印的内容是A00001/testTagconsole打印的前半部分是A03d00/JSAPP

这里不得不提到hilog的四个参数部分:日志级别日志领域日志标识日志内容,前半部分这两个东西分别是日志领域日志标识A00001/testTag在上面的代码输出部分可以找到对应的内容,代表我们是可以对它进行自定义的。而在console中这一部分是默认的,可以认为console就是对hilog的封装,需要开发者自定义的内容少了,所以它用起来更加简单。

但是,凡事都有两面性,console在简单的同时也降低了灵活性,开发者无法自定义日志的业务域和标识,所以有时候无法对代码进行定位。

由此可见,在大型项目中应用hilog对日志进行统一管理是很有必要的,而且这也是官方文档比较推荐的方式。

三、HiLog 详解

HiLog 接口信息如下:
在这里插入图片描述
注意⚠️,

  • isLoggable()和具体日志打印接口使用的domaintag应保持一致。
  • isLoggable()使用的level,应和具体日志打印接口级别保持一致。

参数说明

  • domain:用于指定输出日志所对应的业务领域,取值范围为0x0000~0xFFFF,开发者可以根据需要进行自定义。

  • tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。

  • level:用于指定日志级别。取值见LogLevel。

  • format:格式字符串,用于日志的格式化输出。日志打印的格式化参数需按照“%{private flag}specifier”的格式打印。

在这里插入图片描述
格式字符串中可以设置多个参数,例如格式字符串为“%s World”,“%s”为参数类型为string的变参标识,具体取值在args中定义。

args:可以为0个或多个参数,是格式字符串中参数类型对应的参数列表。参数的数量、类型必须与格式字符串中的标识一一对应。

约束与限制⚠️
日志打印最多打印4096字节,超出限制文本将被截断。

hilog 应用示例如下:

// Index.ets

import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        // 添加按钮,以响应用户点击
        Button() {
          Text('Next')
            .fontSize(30)
            .fontWeight(FontWeight.Bold)
        }
        .type(ButtonType.Capsule)
        .margin({
          top: 20
        })
        .backgroundColor('#0D9FFB')
        .width('40%')
        .height('5%')
        // 跳转按钮绑定onClick事件,点击时打印日志
        .onClick(() => {
          hilog.isLoggable(0xFF00, "testTag", hilog.LogLevel.INFO);    
          hilog.info(0xFF00, "testTag", "%{public}s World %{public}d", "hello", 3);
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

四、拓展阅读


网站公告

今日签到

点亮在社区的每一天
去签到