【HarmonyOS鸿蒙开发日志管理】HiLog日志

内容纲要

作者:韩茹

公司:程序咖(北京)科技有限公司

鸿蒙巴士专栏作家

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

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

定义日志标签

使用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:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。

开发者可以根据自定义参数domain和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}表示日志打印结果不可见,输出结果为

  • 参数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提供了HiLog窗口查看日志信息,开发者可通过设置设备、进程、日志级别和搜索关键词来筛选日志信息。搜索功能支持使用正则表达式,开发者可通过搜索自定义的业务领域值和TAG来筛选日志信息。

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

0000000000011111111.20210608193036.41155936361145124646799269576126

  • W表示日志级别为WARN。
  • 00201/MY_TAG为开发者在HiLogLabel中定义的内容。
  • 日志内容中的url为私有参数不显示具体内容,仅显示。errno为公有参数,显示实际取值503。

发布者:韩茹,未经授权,禁止转载,违者必究:https://bus.chengxuka.com/archives/2498

发表评论

登录后才能评论