OpenHarmony开源社区
直播中

大红枣

11年用户 630经验值
私信 关注
[经验]

Harmony的HiLog打印日志过程分享

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

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

一、官方HiLog调试打印

定义日志标签

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

static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");

参数类型:用于指定输出日志的类型。HiLog中当前只提供了一种日志类型,即应用类型LOG_APP。

域:用于指定输出所参数的业务领域,取值范围为0x0~0xFFFFF,开发者可以根据需要进行自定义。

参数标签:用于指定标识,可以为任意字符串,建议标识调用所在的类或业务行为。

输出日志

HiLog 中定义了 DEBUG、INFO、WARN、ERROR、FATAL 五种日志等级,并显示了用于输出不同等级的日志,如下表。

参数标签:定义好的HiLogLabel标签。

格式字符串:格式字符串,用于输出格式的参数。格式字符串中可以设置多个参数,例如格式字符串为“Failed to visit %s.”,“%s”为参数类型为字符串的变参标识,具体取值在参数中定义。

参数需隐私标识,分为{public}或{private},默认为{private}。{public}日志结果可见;{private}表示打印结果不表示日志,输出结果为。

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

输出一条代码WARN等级的信息,示例:

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

该行代码表示输出一个日志的警告信息,格式字符串为:“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中定义的内容。

日志内容中的网址为参数,不显示具体内容。为公有实际取值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");

原作者:PengLei

回帖(2)

玩硬件的女孩纸

2022-5-30 18:27:18
内容很赞,感谢分享!
举报

jf_65020769

2022-6-1 15:36:46
写代码的时候方便许多,赞~
举报

更多回帖

发帖
×
20
完善资料,
赚取积分