鸿蒙操作系统应用开发实践
上QQ阅读APP看书,第一时间看更新

1.8 日志管理工具

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

输出日志的接口由HiLog类提供。HiLog中定义了5种日志级别,用于输出不同级别的日志信息。

(1)Debug:输出Debug级别的日志。Debug级别日志表示仅用于应用调试,默认不输出,输出前需要在设备的“开发人员选项”中打开“USB调试”开关。

(2)Info:输出Info级别的日志。Info级别日志表示普通的信息。

(3)Warn:输出Warn级别的日志。Warn级别日志表示存在警告。

(4)Error:输出Error级别的日志。Error级别日志表示存在错误。

(5)Fatal:输出Fatal级别的日志。Fatal级别日志表示出现致命错误、不可恢复错误。

这里在Hello World项目中体验一下日志工具。

首先在输出日志前,需要调用HiLog的辅助类HiLogLabel来定义日志标签。打开MainAbility.java文件,在其中定义HiLogLabel类实例,代码如下:

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

其中,HiLog.LOG_APP用于指定输出日志的类型,当前HiLog中只提供了一种日志类型,即应用日志类型LOG_APP。0x00201用于指定输出日志所对应的业务领域,取值范围为0x0~0xFFFFF,可以根据需要自定义。MY_TAG用于指定日志标识,可以设置为任意的字符串。

这里输出一条Warn级别的日志信息,代码如下:

    //输出一条Warn级别的日志信息
    public class MainAbility extends Ability {
   
        static final HiLogLabel label = new HiLogLabel(HiLog.LOG_App,0x00201,"MY_TAG");
        private String URL = "www.***.com";
        public int errno = 503;
  
        @Override
        public void onStart(Intent intent){
             super.onStart(intent);
             super.setMainRoute(MainAbilitySlice.class.getName());
    HiLog.warn(label,"Failed to visit%{private}s,reason:%{public}d.",URL,errno);
        }
    }

其中,定义了虚拟的一个URL网址字符串和一个错误码errno,在Hilog.warn()日志输出语句中,第一个参数label为定义好的HiLog Label标签,第二个双引号内的参数为字符串,用于日志的格式化输出,其中也可以设置多个参数,上述代码中的%s、%d表示参数类型为string和int的变参标识,URL和errno的参数类型和数量必须与标识一一对应。每个参数需添加隐私标识,分为{public}或{private},默认为{private},{public}表示日志打印结果可见,{private}表示日志打印结果不可见。

这时运行程序,在下方的HiLog窗口中可以查看日志信息,当日志信息较多时,可以通过设置设备信息、进程、日志级别和搜索关键词来筛选日志信息。如这里根据运行情况选择了设备信息和进程信息,然后选择Warn级别的日志,可以根据设置的0x00201或MY_TAG进行日志的筛选和查找。这里搜索00201,就得到了对应的日志信息,如图1.47所示。

图1.47 日志输出信息