当前位置: 首页 > news >正文

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

文章目录

    • 一、前言
    • 二、两者区别对比
    • 三、HiLog 详解
    • 四、拓展阅读

一、前言

在日常开发阶段,日志打印是调试程序非常常用的操作,在鸿蒙的官方文档中介绍了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%')
  }
}

四、拓展阅读

  • 《HiLog 官方文档》
  • 《Console (控制台)》

相关文章:

  • Android adb 的功能和用法
  • OpenCV图像拼接(8)用于实现并查集(也称为不相交集合)数据结构类cv::detail::DisjointSets
  • 【实战】渗透测试下的文件操作
  • RCE学习
  • 开源等宽编程字体 Maple Mono 正式发布 7.0
  • Flutter DatePicker 详解
  • 配置go开发环境
  • C/C++ 基础 - 回调函数
  • 设计模式——设计模式理念
  • dockerfile制作镜像
  • leetcode437.路径总和|||
  • C语言中的动态内存管理的学习
  • C++搜索
  • 【鸿蒙5.0】鸿蒙登录界面 web嵌入(隐私页面加载)
  • HTTP缓存
  • 【STL】deque(了解)
  • Linux | I.MX6ULL 终结者底板原理图讲解(4)
  • beikeshop多商户跨境电商独立站最新版v1.6.0版本源码
  • ACM模式常用方法总结(Java篇)
  • StarVector:开启多模态SVG生成的新纪元——开源AI模型的革新之作
  • 软件界面设计的原则/无锡百度快速优化排名
  • ppt内容素材大全/珠海seo推广
  • 湖南网站建设哪家好/线上宣传方案
  • 网站怎么建设微信支付宝支付功能/宣传网站站点最有效的方式是
  • 东莞做网站平台/连云港seo公司
  • 群晖nas安装wordpress安装/东莞网站建设优化诊断