在步调开辟过程中,日记输出是不可或缺的一部门。能有效的记载和分析日记数据,使开辟职员可以更好地相识步调的运行状态、办理标题、优化性能并满足合规性要求等。
当步调出现错误或非常时,日记记载输出可以资助开辟职员快速定位标题发生的位置和缘故因由;通太过析日记,开辟职员可以相识步调在堕落前后的状态和运动,从而更有效地举行调试。
在HarmonyOS中,提供了HiLog日记体系,让应用/服务可以按照指定范例、指定级别、指定格式字符串打印日记内容,资助开辟者相识应用/服务的运行状态,更好地调试步调。
固然,对于风俗前端开辟职员,HarmonyOS也提供了Console的调试控制台,雷同于欣赏器提供的JavaScript控制台机制。
一、HiLog日记打印
HiLog中界说了DEBUG、INFO、WARN、ERROR、FATAL五种日记级别,并提供了对应的方法用于打印差别级别的日记,如下表所示:
序号接口名形貌1debug(domain: number, tag: string, format: string, ...args: any[])打印DEBUG级别的日记。DEBUG级别日记表现仅用于应用/服务调试,默认不打印,打印前须要在装备的“开辟职员选项”中打开“USB调试”开关。2info(domain: number, tag: string, format: string, ...args: any[])打印INFO级别的日记。INFO级别日记表现平凡的信息。3warn(domain: number, tag: string, format: string, ...args: any[])打印WARN级别的日记。WARN级别日记表现存在告诫。4error(domain: number, tag: string, format: string, ...args: any[])打印ERROR级别的日记。ERROR级别日记表现存在错误。5fatal(domain: number, tag: string, format: string, ...args: any[])打印FATAL级别的日记。FATAL级别日记表现出现致命错误、不可规复错误。 参数分析如下表:
序号名称形貌1domain用于指定打印日记所对应的业务范畴,取值范围为0x0~0xFFFFF,开辟者可以根据须要举行自界说。2tag用于指定日记标识,可以为恣意字符串,发起标识调用地点的类大概业务运动。3format格式字符串,用于日记的格式化输出。格式字符串中可以设置多个参数,比方格式字符串为“Failed to visit %s.”,“%s”为参数范例为string的变参标识,详细取值在args中界说。
每个参数需添加隐私标识,分为{public}或{private},默以为{private}。{public}表现日记打印结果可见;{private}表现日记打印结果不可见,输出结果为<private>。4args可以为0个或多个参数,是格式字符串中参数范例对应的参数列表。参数的数目、范例必须与格式字符串中的标识逐一对应。 比方,在创建一个新项目中,打开entryability/EntryAbility.ts文件,此中利用了HiLog来记载App启动过程,代码如下:
- import UIAbility from '@ohos.app.ability.UIAbility';
- import hilog from '@ohos.hilog';
- import window from '@ohos.window';
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
- }
- onDestroy() {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
- }
- onWindowStageCreate(windowStage: window.WindowStage) {
- // Main window is created, set main page for this ability
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
- windowStage.loadContent('pages/RouterPage', (err, data) => {
- if (err.code) {
- hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
- return;
- }
- hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
- });
- }
- onWindowStageDestroy() {
- // Main window is destroyed, release UI related resources
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
- }
- onForeground() {
- // Ability has brought to foreground
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
- }
- onBackground() {
- // Ability has back to background
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
- }
- }
复制代码 这是利用捏造机启动后的控制台输出结果,如下图:

当控制台内容较多时,只体现自己须要的信息,则可以通过tag举行筛选,在搜刮框中填写输出信息的tag标识即可,如上示例中日记输出tag标识为testTag。
二、console控制台
Console控制台中界说了debug、log、info、warn、error、assert等六种日记级别。
详细如下表:
序号名称形貌1debug(message: string, ...arguments: any[]) 输出方式打印调试信息。
从API version 9开始,该接口支持在ArkTS卡片中利用。
2log(message: string, ...arguments: any[]) 输出方式打印日记信息。
从API version 9开始,该接口支持在ArkTS卡片中利用。
3info(message: string, ...arguments: any[]) 输出方式打印日记信息。(console.log()的别名)。
从API version 9开始,该接口支持在ArkTS卡片中利用。
4warn(message: string, ...arguments: any[]) 输出方式打印告诫信息。
从API version 9开始,该接口支持在ArkTS卡片中利用。
5error(message: string, ...arguments: any[]) 输出方式打印错误信息。
从API version 9开始,该接口支持在ArkTS卡片中利用。
6assert(message: string, ...arguments: any[]) 断言打印。
从API version 10+开始,该接口支持在ArkTS卡片中利用。
console.info示例代码如下:
- @Entry
- @Component
- struct ButtonPage {
- @State message: string = 'Hello World'
- build() {
- Row() {
- Column() {
- Button("点击事件").onClick(() => {
- console.log('clickTest', '这是一个按钮点击事件');
- })
- }
- .width('100%')
- }
- .height('100%')
- }
- }
复制代码 控制台输出结果如下:
其官网ArkTS API给出的示例,可以举行格式化输出,地点:文档中央,如下代码:
- const number = 5;
- console.log('count: %d', number); // 格式化输出替换message中的文本。
- // count: 5
- console.log('count:', number); // 打印message以及其余信息
- // count: 5
- console.log('count:'); // 仅打印message
- // count:
复制代码 但是项目中测试格式化输出无效,不外也不必过于纠结此标题,可以利用模板字符串来取代格式输出功能,代码如下:
- const number = 5;
- console.log(`cout ${number}`); // 格式化输出替换message中的文本。
- // count: 5
复制代码
|