当前位置:   article > 正文

HarmonyOS之调试分析打印HiLog日志_harmony log日志

harmony log日志
一、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"); 
  • 1
  • 参数说明:
    • 参数 type:用于指定输出日志的类型。HiLog 中当前只提供了一种日志类型,即应用日志类型 LOG_APP。
    • 参数 domain:用于指定输出日志所对应的业务领域,取值范围为0x0~0xFFFFF,开发者可以根据需要进行自定义。
    • 参数 tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。
  • 开发者可以根据自定义参数 domain 和 tag 来进行日志的筛选和查找。
三、输出日志
  • HiLog 中定义了 DEBUG、INFO、WARN、ERROR、FATAL 五种日志级别,并提供了对应的方法用于输出不同级别的日志。
  • HiLog 提供的主要接口:
接口名功能描述
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);
  • 1
  • 该行代码表示输出一个日志标签为 label 的警告信息,格式字符串为:“Failed to visit %{private}s, reason:%{public}d.”。其中变参 url 的格式为私有的字符串,errno 为公共的整型数。
四、查看日志信息
  • DevEco Studio 提供了 HiLog 窗口查看日志信息,开发者可通过设置设备、进程、日志级别和搜索关键词来筛选日志信息。搜索功能支持使用正则表达式,开发者可通过搜索自定义的业务领域值和 TAG 来筛选日志信息。
  • 如示例所示,根据实际情况选择了设备和进程后,搜索业务领域值“00201”进行筛选,得到对应的日志信息。

在这里插入图片描述

  • 结果输出:
	06-23 16:08:36.908 23597-23597/com.example.myapplication W 00201/MY_TAG: Failed to visit <private>, reason:503.
  • 1
  • 结果分析:
    • W 表示日志级别为 WARN。
    • 00201/MY_TAG 为开发者在 HiLogLabel 中定义的内容。
    • 日志内容中的 url 为私有参数不显示具体内容,仅显示 < private >。errno 为公有参数,显示实际取值 503。
五、日志打印实例
  • 在按钮中增加一个点击事件,点击按钮时打印一条日志。
  • 新建一个工程,选择 Java 的空白模板。
  • 新建一个工程,在“Project”窗口点击“entry > src > main > java > 应用包名 > slice”,打开工程中的“MainAbilitySlice.java”文件,添加一个按钮,实现点击按钮打印一条日志,示例代码如下:
	package com.example.myapplication.slice; // 请开发者根据实际情况写包名
	
	import ohos.aafwk.ability.AbilitySlice;
	import ohos.aafwk.content.Intent;
	import ohos.agp.components.Button;
	
	import ohos.agp.components.DirectionalLayout;
	import ohos.hiviewdfx.HiLog;
	import ohos.hiviewdfx.HiLogLabel;
	
	public class MainAbilitySlice extends AbilitySlice {
	
	    // 定义日志标签
	    private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
	
	    @Override
	    public void onStart(Intent intent) {
	        super.onStart(intent);
	
	        // 添加一个按钮
	        DirectionalLayout directionalLayout = new DirectionalLayout(getContext());
	        Button button = new Button(getContext());
	        button.setText("Click!");
	        button.setTextSize(200);
	
	        if (button != null) {
	            // 为按钮设置点击回调
	            button.setClickedListener(component -> {
	                    // 打印一条日志
	                    HiLog.info(LABEL, "Hey! You have successfully printed a log.");
	            });
	        }
	
	        directionalLayout.addComponent(button);
	        super.setUIContent(directionalLayout);
	    }
	
	    @Override
	    public void onActive() {
	        super.onActive();
	    }
	
	    @Override
	    public void onForeground(Intent intent) {
	        super.onForeground(intent);
	    }
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 在模拟器或者真机上运行项目,点击应用界面上的按钮。
  • 在 DevEco Studio 的底部,切换到“HiLog”窗口,设置日志的过滤条件。
    选择当前的设备及进程,日志级别选择 Info,搜索内容设置为“00201”。此时窗口仅显示符合条件的日志,效果如图所示:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/245070
推荐阅读
相关标签
  

闽ICP备14008679号