HarmonyOS API:系统基础能力
版本:v3.1 Beta
@ohos.faultLogger (故障日志获取)
更新时间: 2023-03-10 16:42
说明
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import faultLogger from '@ohos.faultLogger'
FaultType
故障类型枚举。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
名称 | 值 | 说明 |
NO_SPECIFIC | 0 | 不区分故障类型 |
CPP_CRASH | 2 | C++程序故障类型 |
JS_CRASH | 3 | JS程序故障类型 |
APP_FREEZE | 4 | 应用程序卡死故障类型 |
FaultLogInfo
故障信息数据结构,获取到的故障信息的数据结构。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
名称 | 类型 | 必填 | 说明 |
pid | number | 是 | 故障进程的进程id |
uid | number | 是 | 故障进程的用户id |
type | 是 | 故障类型 | |
timestamp | number | 是 | 日志生成时的秒级时间戳 |
reason | string | 是 | 发生故障的原因 |
module | string | 是 | 发生故障的模块 |
summary | string | 是 | 故障的概要 |
fullLog | string | 是 | 故障日志全文 |
faultLogger.querySelfFaultLog(deprecated)
querySelfFaultLog(faultType: FaultType, callback: AsyncCallback<Array<FaultLogInfo>>) : void
获取当前进程故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。
说明
从API version 9开始废弃,建议使用faultLogger.query替代。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
参数:
参数名 | 类型 | 必填 | 说明 |
faultType | 是 | 输入要查询的故障类型。 | |
callback | AsyncCallback<Array<FaultLogInfo>> | 是 | 回调函数,在回调函数中获取故障信息数组。 - value拿到故障信息数组;value为undefined表示获取过程中出现异常,error返回错误提示字符串 |
示例:
function queryFaultLogCallback(error, value) {
if (error) {
console.info('error is ' + error);
} else {
console.info("value length is " + value.length);
let len = value.length;
for (let i = 0; i < len; i++) {
console.info("log: " + i);
console.info("Log pid: " + value[i].pid);
console.info("Log uid: " + value[i].uid);
console.info("Log type: " + value[i].type);
console.info("Log timestamp: " + value[i].timestamp);
console.info("Log reason: " + value[i].reason);
console.info("Log module: " + value[i].module);
console.info("Log summary: " + value[i].summary);
console.info("Log text: " + value[i].fullLog);
}
}
}
faultLogger.querySelfFaultLog(faultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
faultLogger.querySelfFaultLog(deprecated)
querySelfFaultLog(faultType: FaultType) : Promise<Array<FaultLogInfo>>
获取当前进程故障信息,该方法通过Promise方式返回故障信息数组,故障信息数组内最多上报10份故障信息。
说明
从API version 9开始废弃,建议使用faultLogger.query替代。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
参数:
参数名 | 类型 | 必填 | 说明 |
faultType | 是 | 输入要查询的故障类型。 |
返回值:
类型 | 说明 |
Promise<Array<FaultLogInfo>> | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 - value拿到故障信息数组;value为undefined表示获取过程中出现异常 |
示例:
async function getLog() {
let value = await faultLogger.querySelfFaultLog(faultLogger.FaultType.JS_CRASH);
if (value) {
console.info("value length is " + value.length);
let len = value.length;
for (let i = 0; i < len; i++) {
console.info("log: " + i);
console.info("Log pid: " + value[i].pid);
console.info("Log uid: " + value[i].uid);
console.info("Log type: " + value[i].type);
console.info("Log timestamp: " + value[i].timestamp);
console.info("Log reason: " + value[i].reason);
console.info("Log module: " + value[i].module);
console.info("Log summary: " + value[i].summary);
console.info("Log text: " + value[i].fullLog);
}
}
}
faultLogger.query9+
query(faultType: FaultType, callback: AsyncCallback<Array<FaultLogInfo>>) : void
获取当前进程故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
参数:
参数名 | 类型 | 必填 | 说明 |
faultType | 是 | 输入要查询的故障类型。 | |
callback | AsyncCallback<Array<FaultLogInfo>> | 是 | 回调函数,在回调函数中获取故障信息数组。 - value拿到故障信息数组;value为undefined表示获取过程中出现异常,error返回错误提示字符串 |
错误码:
以下错误码的详细介绍参见ohos.faultLogger错误码。
错误码ID | 错误信息 |
10600001 | The service is not started or is faulty |
示例:
function queryFaultLogCallback(error, value) {
if (error) {
console.info('error is ' + error);
} else {
console.info("value length is " + value.length);
let len = value.length;
for (let i = 0; i < len; i++) {
console.info("log: " + i);
console.info("Log pid: " + value[i].pid);
console.info("Log uid: " + value[i].uid);
console.info("Log type: " + value[i].type);
console.info("Log timestamp: " + value[i].timestamp);
console.info("Log reason: " + value[i].reason);
console.info("Log module: " + value[i].module);
console.info("Log summary: " + value[i].summary);
console.info("Log text: " + value[i].fullLog);
}
}
}
try {
faultLogger.query(faultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
} catch (err) {
console.error(`code: ${err.code}, message: ${err.message}`);
}
faultLogger.query9+
query(faultType: FaultType) : Promise<Array<FaultLogInfo>>
获取当前进程故障信息,该方法通过Promise方式返回故障信息数组,故障信息数组内最多上报10份故障信息。
系统能力: SystemCapability.HiviewDFX.Hiview.FaultLogger
参数:
参数名 | 类型 | 必填 | 说明 |
faultType | 是 | 输入要查询的故障类型。 |
返回值:
类型 | 说明 |
Promise<Array<FaultLogInfo>> | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 - value拿到故障信息数组;value为undefined表示获取过程中出现异常 |
错误码:
以下错误码的详细介绍参见ohos.faultLogger错误码。
错误码ID | 错误信息 |
10600001 | The service is not started or is faulty |
示例:
async function getLog() {
try {
let value = await faultLogger.query(faultLogger.FaultType.JS_CRASH);
if (value) {
console.info("value length is " + value.length);
let len = value.length;
for (let i = 0; i < len; i++) {
console.info("log: " + i);
console.info("Log pid: " + value[i].pid);
console.info("Log uid: " + value[i].uid);
console.info("Log type: " + value[i].type);
console.info("Log timestamp: " + value[i].timestamp);
console.info("Log reason: " + value[i].reason);
console.info("Log module: " + value[i].module);
console.info("Log summary: " + value[i].summary);
console.info("Log text: " + value[i].fullLog);
}
}
} catch (err) {
console.error(`code: ${err.code}, message: ${err.message}`);
}
}
@ohos.hichecker (检测模式)
更新时间: 2023-02-17 09:19
HiChecker可以作为应用开发阶段使用的检测工具,用于检测代码运行过程中部分易忽略的问题,如应用线程出现耗时调用、应用进程中Ability资源泄露等问题。开发者可以通过日志记录或进程crash等形式查看具体问题并进行修改,提升应用的使用体验。
说明
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import hichecker from '@ohos.hichecker';
常量
提供了所有规则类型的常量。
系统能力: SystemCapability.HiviewDFX.HiChecker
名称 | 参数类型 | 说明 |
RULE_CAUTION_PRINT_LOG | bigint | 告警规则,当有告警时记录日志。 |
RULE_CAUTION_TRIGGER_CRASH | bigint | 告警规则,当有告警时让应用推出。 |
RULE_THREAD_CHECK_SLOW_PROCESS | bigint | 检测规则,检测是否有耗时函数被调用。 |
RULE_CHECK_ABILITY_CONNECTION_LEAK | bigint | 检测规则,检测是否发生ability泄露。 |
hichecker.addCheckRule9+
addCheckRule(rule: bigint): void
添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要添加的规则。 |
示例:
try {
// 添加一条规则
hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
// 添加多条规则
// hichecker.addCheckRule(
// hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
} catch (err) {
console.error(`code: ${err.code}, message: ${err.message}`);
}
hichecker.removeCheckRule9+
removeCheckRule(rule: bigint): void
删除一条或多条规则,删除的规则后续将不再生效。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要删除的规则。 |
示例:
try {
// 删除一条规则
hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
// 删除多条规则
// hichecker.removeCheckRule(
// hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
} catch (err) {
console.error(`code: ${err.code}, message: ${err.message}`);
}
hichecker.containsCheckRule9+
containsCheckRule(rule: bigint): boolean
当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要查询的规则。 |
返回值:
类型 | 说明 |
boolean | 查询结果,true 表示规则已添加,false 表示规则未添加。 |
示例:
try {
// 添加一条规则
hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
// 查询是否包含
hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
} catch (err) {
console.error(`code: ${err.code}, message: ${err.message}`);
}
hichecker.addRule(deprecated)
addRule(rule: bigint): void
添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。
说明
从 API Version 9 开始废弃,建议使用hichecker.addCheckRule替代。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要添加的规则。 |
示例:
// 添加一条规则
hichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG);
// 添加多条规则
hichecker.addRule(
hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
hichecker.removeRule(deprecated)
removeRule(rule: bigint): void
删除一条或多条规则,删除的规则后续将不再生效。
说明
从 API Version 9 开始废弃,建议使用hichecker.removeCheckRule替代。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要删除的规则。 |
示例:
// 删除一条规则
hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG);
// 删除多条规则
hichecker.removeRule(
hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
hichecker.getRule
getRule(): bigint
获取当前线程规则、进程规则、告警规则的合集。
系统能力: SystemCapability.HiviewDFX.HiChecker
返回值:
类型 | 说明 |
bigint | 当前系统中添加的规则。 |
示例:
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
// 获取已添加的规则
hichecker.getRule(); // return 1n;
hichecker.contains(deprecated)
contains(rule: bigint): boolean
当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。
说明
从 API Version 9 开始废弃,建议使用hichecker.containsCheckRule替代。
系统能力: SystemCapability.HiviewDFX.HiChecker
参数:
参数名 | 类型 | 必填 | 说明 |
rule | bigint | 是 | 需要查询的规则。 |
返回值:
类型 | 说明 |
boolean | 查询结果,true 表示规则已添加,false 表示规则未添加。 |
示例:
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
// 查询是否包含
hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false;