HarmonyOS 鸿蒙Next 开发 HiLog日志打印

HarmonyOS 鸿蒙Next 开发 HiLog日志打印 HarmonyOS提供了HiLog日志系统,让应用/服务可以按照指定类型、指定级别、指定格式字符串输出日志内容,帮助开发者了解应用/服务的运行状态,更好地调试程序。

输出日志的接口由HiLog类提供。在输出日志前,需要先调用HiLog的辅助类HiLogLabel定义日志标签。

一、官方HiLog调试打印

定义日志标签

使用HiLogLabel(int type, int domain, String tag)定义日志标签,其中包括了日志类型、业务领域和TAG。使用示例:

static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
  • 参数type:用于指定输出日志的类型。HiLog中当前只提供了一种日志类型,即应用日志类型LOG_APP。
  • 参数domain:用于指定输出日志所对应的业务领域,取值范围为0x0~0xFFFFF,开发者可以根据需要进行自定义。
  • 参数tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。

输出日志

HiLog中定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别,并提供了对应的方法用于输出不同级别的日志,如下表所示。

接口名 功能描述
debug​(HiLogLabel label, String format, Object… args) 输出DEBUG级别的日志。DEBUG级别日志表示仅用于应用/服务调试,默认不输出,输出前需要在设备的“开发人员选项”中打开“USB调试”开关。
info​(HiLogLabel label, String format, Object… args) 输出INFO级别的日志。INFO级别日志表示普通的信息。
warn​(HiLogLabel label, String format, Object… args) 输出WARN级别的日志。WARN级别日志表示存在警告。
error​(HiLogLabel label, String format, Object… args) 输出ERROR级别的日志。ERROR级别日志表示存在错误。
fatal​(HiLogLabel label, String format, Object… args) 输出FATAL级别的日志。FATAL级别日志表示出现致命错误、不可恢复错误。
  • 参数label:定义好的HiLogLabel标签。
  • 参数format:格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,例如格式字符串为“Failed to visit %s.”,“%s”为参数类型为string的变参标识,具体取值在args中定义。
  • 每个参数需添加隐私标识,分为{public}或{private},默认为{private}。{public}表示日志打印结果可见;{private}表示日志打印结果不可见,输出结果为<private>。
  • 参数args:可以为0个或多个参数,是格式字符串中参数类型对应的参数列表。参数的数量、类型必须与格式字符串中的标识一一对应。

以输出一条WARN级别的信息为例,示例代码:

HiLog.warn(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno);

该行代码表示输出一个日志标签为LABEL的警告信息,格式字符串为:“Failed to visit %{private}s, reason:%{public}d.”。其中变参url的格式为私有的字符串,errno为公共的整型数。

查看日志信息

DevEco Studio提供了“Log > HiLog”窗口查看日志信息,开发者可通过设置设备、进程、日志级别和搜索关键词来筛选日志信息。搜索功能支持使用正则表达式,开发者可通过搜索自定义的业务领域值和TAG来筛选日志信息。

如示例所示,根据实际情况选择了设备和进程后,搜索业务领域值“00201”进行筛选,得到对应的日志信息。

结果输出:

07-19 14:22:56.071 13849-13849/com.example.myapplication W 00201/MY_TAG:  Failed to visit , reason:503.
  • W表示日志级别为WARN。
  • 00201/MY_TAG为开发者在HiLogLabel中定义的内容。
  • 日志内容中的url为私有参数不显示具体内容。errno为公有参数,显示实际取值503。

二、封装HiLog调试打印

封装HiLog工具类,如下:

public class LogUtils {
    private static final String TAG_LOG = "LogUtil";
    private static final HiLogLabel LABEL_LOG = new HiLogLabel(0, 0, LogUtils.TAG_LOG);
    private static final String LOG_FORMAT = "%{public}s: %{public}s";

    private LogUtils() {
    }

    public static void debug(String tag, String msg) {
        HiLog.debug(LABEL_LOG, LOG_FORMAT, tag, msg);
    }

    public static void info(String tag, String msg) {
        HiLog.info(LABEL_LOG, LOG_FORMAT, tag, msg);
    }

    public static void warn(String tag, String msg) {
        HiLog.warn(LABEL_LOG, LOG_FORMAT, tag, msg);
    }

    public static void error(String tag, String msg) {
        HiLog.error(LABEL_LOG, LOG_FORMAT, tag, msg);
    }
}

代码中的使用:

LogUtils.debug(TAG, "message is null");

以上就是HarmonyOS的HiLog日志打印的讲解,如有不正确的地方欢迎指正,互相学习,完毕!!!


更多关于HarmonyOS 鸿蒙Next 开发 HiLog日志打印的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

HiLogLabel 的 domain 参数设置就很迷,很多时候日志根本打不出来,只能不断地修改 domain,一个个的试。

更多关于HarmonyOS 鸿蒙Next 开发 HiLog日志打印的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我也搞不清楚这个domain参数 是什么概念,

以前是小写的hilog,现在又搞出来一个HiLog,有什么区别

hilog与console.log有啥区别?

如何默认打印 pravite 的日志,每次 format 字符串都要添加 {public} 很别扭。

谢谢分享,我试试看,我目前碰到和2楼一样的问题,打印的日志在当前应用进程下看不到,这让调试变得非常不方便。

谢谢关注!

在HarmonyOS(鸿蒙)Next开发中,HiLog是用于系统日志记录的API,它允许开发者在应用或系统服务中打印日志信息,便于调试和问题分析。以下是如何在HarmonyOS应用中使用HiLog进行日志打印的基本步骤:

  1. 引入HiLog头文件: 在你的源代码文件中,首先需要包含HiLog的头文件。这通常是通过#include "hilog/log.h"来实现的。

  2. 定义日志标签: 定义一个日志标签(Log Tag),它是一个字符串,用于标识日志的来源。例如:#define LOG_TAG "MyAppTag"

  3. 打印日志: 使用HiLog提供的宏函数来打印日志。常见的宏有HILOG_INFOHILOG_WARNHILOG_ERROR等,分别对应不同级别的日志。例如,打印一条信息级别的日志:

    HILOG_INFO(LOG_TAG, "This is an info log message.");
    
  4. 配置日志级别: 在开发过程中,你可能需要调整日志级别以控制日志输出的详细程度。这通常在系统的日志配置文件中设置,或者在某些情况下,可以通过编程方式动态调整。

如果遵循上述步骤后仍无法正确打印HiLog日志,可能的原因包括日志级别配置不当、日志系统服务异常等。此时,应检查相关配置和系统状态。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部