> 文档中心 > 【HarmonyOS应用开发】打印HiLog日志

【HarmonyOS应用开发】打印HiLog日志

熟悉Java的朋友都知道,在编写Java代码时可以使用System.out.println()打印日志。这种方式有很多缺点,例如:没有打印时间、没有日志级别、不可控制日志、等等。

鸿蒙为开发者提供了日志系统HiLog,让应用可以按照指定类型、指定级别、指定格式字符串等打印日志内容,从而帮助开发者了解应用的运行状态,更好地调试程序。因此,推荐使用日志系统HiLog打印日志。

接下来,就给大家详细介绍日志系统HiLog的相关用法。

新建一个工程,如下图所示。大家注意:如果想要在真机上运行,请将包名修改为我们在AppGallery Connect上配置的包名hcia.ly.demos。

   

为了方便过滤打印的日志,首先需要创建一个日志标签。打开MainAbilitySlice,构造一个HiLogLabel的实例,如下图所示:

 

构造方法中有三个参数
(1) 第一个参数是type,用于指定日志的类型。当前只支持一种日志类型HiLog.APP,即应用日志类型。
(2) 第二个参数是domain,用于指定日志所对应的业务领域,是一个十六进制数,取值范围为0x0~0xFFFFF。开发者可以根据需要进行自定义。简单地说,参数domain用于指定日志的数字标签。
(3) 第三个参数是tag,用于指定日志的标识,可以是任意字符串。简单地说,参数tag用于指定日志的文本标签。

这样,在打印出日志之后,就可以使用“参数domain指定的数字标签”或者”参数tag指定的文本标签”对日志进行过滤了。

接下来,在方法onStart()中,调用类HiLog提供的多个静态方法,打印不同等级的日志,在调用这些静态方法时将第1个参数全部都指定为创建的日志标签HI_LOG_LABEL,将第2个参数指定为打印的日志内容,如下图所示:

 

在类HiLog中定义了5种日志级别:Debug、Info、Warn、Error、Fatal,并提供了5个静态方法用于打印对应级别的日志。这5种级别日志的功能是这样的:
(1) Debug级别的日志,是仅在开发过程中因调试程序而产生的信息。
(2) Info级别的日志,是程序在正常运行状态中的信息。
(3) Warn级别的日志,是程序中存在的尚不是错误的潜在问题。
(4) Error级别的日志,是程序中存在的普通错误。
(5) Fatal级别的日志,是程序中存在的致命错误。

目前,鸿蒙的版本更新迭代比较快,在本地真机上可能会存在无法打印日志的情况。打开远程模拟器P40,运行工程,打开工具窗口log,在页签Hilog中,选择日志级别Verbose,在搜索框中输入数字标签“12345”(注意不是“0x12345”),或输入文本标签“鸿蒙HCIA认证”,如下图所示:

 

在所有日志中过滤出了5条通过程序打印的日志,分别使用大写字母D、I、W、E、F表示5种日志级别:Debug、Info、Warn、Error、Fatal,如下图所示:

 

在类HiLog中,使用整数3、4、5、6、7分别表示5种日志级别:Debug、Info、Warn、Error、Fatal。在工具窗口”Log”的页签”Hilog”中通过下拉列表选中某个日志级别后,只有大于等于该级别的日志才会被过滤出来。例如:当选中的日志级别为Warn时(Warn对应的整数为5),只过滤出了Warn、Error、Fatal这三个级别的日志(对应的整数分别是5、6、7),如下图所示:

 

因此,除了通过数字标签或文本标签对日志进行过滤之外,还可以通过日志级别对日志进行过滤。

对于打印日志的5个静态方法,第2个参数是打印的日志内容,可以是普通字符串,也可以是格式字符串,如下图所示。

 

首先,定义三个变量,第一个变量是字符串类型的,变量值是“ly”,第二个变量是整数类型的,变量值是18,第三个变量是双精度浮点类型的,变量值是51.8。

然后,打印一条info级别的日志,第一个参数是日志标签,第二个参数是一个格式字符串"姓名:%{public}s,年龄:%{private}d,体重:%f",其中有三个占位符。每个占位符由三部分组成:
(1) 百分号%
(2) 隐私标识,分为{public}和{private},默认为{private}。{public}表示日志输出结果可见,{private}表示日志输出结果不可见。
(3) 数据类型,常见的有:s、d、f,分别表示字符串类型、整数类型、浮点数类型。

最后几个参数,是格式字符串中的占位符所对应的参数列表,参数的数量和类型必须与格式字符串中的占位符完全对应。

运行工程,在搜索框中输入“姓名”,对打印的日志进行过滤,如下图所示。大家注意:隐私标识{private}目前还没有向开发者开放,因此,三个占位符的输出结果都是可见的。

  KTV音响网