鸿蒙应用开发之日志输出

通常我们在开发应用程序时,需要在某些关键代码处输出日志信息,便于定位和排查问题。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。

鸿蒙系统提供两个API供开发者调用并输出日志信息,即HiLog与console。两个API在使用时略有区分。

HiLog

打印日志接口说明

在输出日志前,需先调用isLoggable确认domain、tag和日志级别是否被禁止打印日志。示例如下:

hilog.isLoggable(0x0000, "testTag", hilog.LogLevel.INFO);
  • 参数domain:用于指定输出日志所对应的业务领域,取值范围为0x0000~0xFFFF,开发者可以根据需要进行自定义。
  • 参数tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。
  • 参数level:用于指定日志级别。

HiLog中定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别,并提供了对应的方法输出不同级别的日志,接口如下表所示:

接口名

功能描述

debug(domain: number, tag: string, format: string, ...args: Array<Object>)

输出DEBUG级别日志。仅用于应用/服务调试。

在DevEco Studio的terminal窗口或cmd里,通过命令“hdc shell hilogcat”设置可打印日志的等级为DEBUG。

info(domain: number, tag: string, format: string, ...args: Array<Object>)

输出INFO级别日志。表示普通的信息。

warn(domain: number, tag: string, format: string, ...args: Array<Object>)

输出WARN级别日志。表示存在警告。

error(domain: number, tag: string, format: string, ...args: Array<Object>)

输出ERROR级别日志。表示存在错误。

fatal(domain: number, tag: string, format: string, ...args: Array<Object>)

输出FATAL级别日志。表示出现致命错误、不可恢复错误。

  • 参数domain和tag应与isLoggable中使用一致。
  • 参数format:格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,例如格式字符串为“%s World”,“%s”为参数类型为string的变参标识,具体取值在args中定义。
  • format中的每个参数需添加隐私标识,分为{public}或{private},默认为{private}。{public}表示日志打印结果可见;{private}表示日志打印结果不可见,输出结果为<private>。
  • 调试时可通过命令“hilog -p off”指令,关闭隐私开关,明文显示private日志内容。
  • 参数args:可以为0个或多个参数,是格式字符串中参数类型对应的参数列表。参数的数量、类型必须与格式字符串中的标识一一对应。

以输出一条INFO级别的信息为例,示例如下:

hilog.info(0xFF00, "testTag", "%{public}s World %{public}d", "hello", 3);

表示输出一条普通信息,格式字符串为:”%{public}s World %{public}d”。其中变参"%{public}s"为公共的字符串,%{public}d为公共的整型数。

Console

(1)console.debug

debug(message: string, ...arguments: any[]): void

以格式化输出方式打印调试信息。

从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

message

string

表示要打印的文本信息。

arguments

any[]

表示其余要打印的信息或message的替换值。

示例:

const number = 5;console.debug('count: %d', number);  // 格式化输出替换message中的文本。// count: 5 console.debug('count:', number);  // 打印message以及其余信息// count: 5 console.debug('count:'); // 仅打印message// count: 

(2)console.log

log(message: string, ...arguments: any[]): void

以格式化输出方式打印日志信息。

从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

message

string

表示要打印的文本信息。

arguments

any[]

表示其余要打印的信息或message的替换值。

示例:

const number = 5;console.log('count: %d', number);  // 格式化输出替换message中的文本。// count: 5 console.log('count:', number);  // 打印message以及其余信息// count: 5 console.log('count:'); // 仅打印message// count: 

(3)console.info

info(message: string, ...arguments: any[]): void

以格式化输出方式打印日志信息。(console.log()的别名)。

从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

message

string

表示要打印的文本信息。

arguments

any[]

表示其余要打印的信息或message的替换值。

示例:

const number = 5;console.info('count: %d', number);  // 格式化输出替换message中的文本。// count: 5 console.info('count:', number);  // 打印message以及其余信息// count: 5 console.info('count:'); // 仅打印message// count: 

(4)console.warn

warn(message: string, ...arguments: any[]): void

以格式化输出方式打印警告信息。

从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

message

string

表示要打印的警告信息。

arguments

any[]

表示其余要打印的信息或message的替换值。

示例:

const str = "name should be string";console.warn('warn: %d', str);  // 格式化输出替换message中的文本。// warn: name should be stringconsole.warn('warn:', str);  // 打印message以及其余信息// warn: name should be stringconsole.warn('warn:'); // 仅打印message// warn: 

(5)console.error

error(message: string, ...arguments: any[]): void

以格式化输出方式打印错误信息。

从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

message

string

表示要打印的错误信息。

arguments

any[]

表示其余要打印的信息或message的替换值。

示例:

const str = "value is not defined";console.error('error: %d', str);  // 格式化输出替换message中的文本。// error: value is not definedconsole.error('error:', str);  // 打印message以及其余信息// error: value is not definedconsole.error('error:'); // 仅打印message// error: 

(6)console.assert

assert(value?: Object, ...arguments: Object[]): void

断言打印。

系统能力: SystemCapability.Utils.Lang

参数:

参数名

类型

必填

说明

value

Object

语句结果值。若value为假(false)或者省略,则输出以"Assertion failed"开头。如果 value 为真值(true),则无打印。

arguments

Object

value为假(false)的后续错误消息打印。省略则不打印。

示例:

console.assert(true, 'does nothing');  // 表达式结果值为true, 无打印。console.assert(2 % 1 == 0, 'does nothing');  // 表达式结果值为true, 无打印。
console.assert(false, 'console %s work', 'didn\'t');// Assertion failed: console didn't work
console.assert();// Assertion failed

参数名

类型

必填

说明

label

string

计时器标识。默认值为'default'

arguments

Object

需要打印的其他日志。

示例:

console.time('timer1');console.timeLog('timer1', 17);// timer1: 365.227ms 17console.timeEnd('timer1');// timer1: 513.22ms

其他用法请参考官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

充电实践

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值