HiLog是DevEco Studio中用于调试应用程序的日志工具,可以将应用程序中的变量进行输出,以检查程序是否可正常工作。在学习过程中,HiLog也是必不可少的学习工具。在今后的学习中,会经常使用HiLog在控制台上输出一些必要信息,以了解和分析应用程序的执行状态。
在具体使用HiLog日志工具前,首先需要了解两个重要的类:HiLog和HiLogLabel。
HiLogLabel即HiLog标签,其构造方法签名为public HiLogLabel(int type,int domain,String tag),其中包含了3个参数,其具体的功能如下:
(1)type参数:通过常量定义HiLogLabel的级别,包含严重错误(HiLog.FATAL)、错误(HiLog.ERROR)、警告(HiLog.WARN)、调试(HiLog.DEBug)、信息(HiLog.INFO)、日志(HiLog.LOG_APP)等6个级别。
(2)domain参数:定义HiLogLabel的服务域(Service Domain),相似的输出使用相似的服务域。范围从0x0到0xFFFFF。前3位通常为子系统(SubSystem)名称,后2位通常为模块(Module)名称。例如,可以用0x00102表示第001子系统的第02模块的服务域。
(3)tag参数:定义HiLog标签的名称。
domain和tag参数会随着HiLog的输出方法显示在控制台中,开发者通过这两个参数可以判断该HiLog信息的来源(所属的服务域和模块)。
在具体的使用中,由于HiLogLabel对象通常会被HiLog类的方法多次复用,因此最好通过static final标识符将其定义为静态对象。
HiLog类用于直接定义在控制台上输出字符串。HiLog类包含了debug、info、warn、error、fatal等5个主要的静态调试方法,分别用于输出调试信息、一般信息、警告信息、错误信息和严重错误信息。
接下来分析一下这几种方法的参数。例如,debug方法的签名为debug(HiLogLabel label,String format,Object...args),其余4个调试方法的参数与其一致。其中,label参数用于传入HiLogLabel对象;format和args参数用于传入格式化字符串。
例如,在MainAbility.java文件中,通过一个HiLogLabel对象和HiLog的info方法即可在HiLog工具窗体中进行文本输出,代码如下(加粗字体为新增代码):
编译并运行程序,便可以在HiLog工具窗体中查看相应的文本输出,如图2-41所示。
图2-41 HiLog输出文本
在这条输出文本中,com.example.customtimer代表了输出该文本的应用程序包名;I表示了HiLog级别为一般信息(Info);“00101/测试”代表了该HiLog所对应的服务域和标签名称。
另外,在HiLog工具窗体的上方可以通过选择设备、选择应用程序、选择级别和输出关键词的方式搜索及查找HiLog输出文本。
在HiLog中,不仅可以实现文本的格式化输出,还可以实现变量的私有输出和公有输出。私有输出的变量只有在调试模式下才会输出变量值。在格式化输出符号中加入{private}或{public}可分别用于定义变量的私有输出和公有输出。例如,可以在%s中加入{public}(即%{private}s)以便输出一个公有的字符串。接下来,在MainAbility类的onStart方法中添加以下代码:
重新编译并运行程序,就可以在HiLog工具窗体中查看以下输出:
可见,通过{private}定义的私有输出会以<private>字符串隐藏其具体的变量值。
注意: DevEco Studio中内置了Logcat工具,也可以用于调试输出。例如,可以在Logcat工具窗体中查看程序中System.out.println方法的输出。