js-apis-faultLogger.md 4.4 KB
Newer Older
Y
YOUR_NAME 已提交
1 2 3 4 5 6
# 故障日志获取
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

Z
zengyawen 已提交
7
```js
Y
YOUR_NAME 已提交
8 9 10 11
import faultLogger from '@ohos.faultLogger'
```


Z
zengyawen 已提交
12
## FaultType
Y
YOUR_NAME 已提交
13

Z
zengyawen 已提交
14
故障类型枚举。
Y
YOUR_NAME 已提交
15

Z
zengyawen 已提交
16 17
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.Hiview.FaultLogger。

Y
YOUR_NAME 已提交
18 19 20 21 22 23 24
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| NO_SPECIFIC | 0 | 不区分故障类型 |
| CPP_CRASH | 2 | C++程序故障类型 |
| JS_CRASH | 3 | JS程序故障类型 |
| APP_FREEZE | 4 | 应用程序卡死故障类型 |

Z
zengyawen 已提交
25
## FaultLogInfo
Y
YOUR_NAME 已提交
26

Z
zengyawen 已提交
27
故障信息数据结构,获取到的故障信息的数据结构。
Y
YOUR_NAME 已提交
28

Z
zengyawen 已提交
29 30
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.Hiview.FaultLogger。

Y
YOUR_NAME 已提交
31 32 33 34
| 名称 | 参数类型 | 说明 |
| -------- | -------- | -------- |
| pid | number | 故障进程的进程id |
| uid | number | 故障进程的用户id |
35
| type | [FaultType](#faulttype) | 故障类型 |
Y
YOUR_NAME 已提交
36 37 38 39 40 41 42 43 44 45 46 47
| timestamp | number | 日志生成时的秒级时间戳 |
| reason | string | 发生故障的原因 |
| module | string | 发生故障的模块 |
| summary | string | 故障的概要 |
| fullLog | string | 故障日志全文 |

## faultLogger.querySelfFaultLog

querySelfFaultLog(faultType: FaultType, callback: AsyncCallback<Array<FaultLogInfo>>) : void

获取当前进程故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。

Z
zengyawen 已提交
48 49
**系统能力:** SystemCapability.HiviewDFX.Hiview.FaultLogger

Z
zengyawen 已提交
50 51 52 53 54 55 56 57
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |
| callback | AsyncCallbackArray&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | 是 | 回调函数,在回调函数中获取故障信息数组。<br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常,error返回错误提示字符串

**示例:**
Y
YOUR_NAME 已提交
58

Z
zengyawen 已提交
59
```js
Y
YOUR_NAME 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
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 ts: " + value[i].ts);
            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);
        }
    }
}
Y
YOUR_NAME 已提交
79
faultLogger.querySelfFaultLog(faultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
Y
YOUR_NAME 已提交
80 81 82 83
```

## faultLogger.querySelfFaultLog

Z
zengyawen 已提交
84
querySelfFaultLog(faultType: FaultType) : Promise&lt;Array&lt;FaultLogInfo&gt;&gt;
Y
YOUR_NAME 已提交
85 86 87

获取当前进程故障信息,该方法通过Promise方式返回故障信息数组,故障信息数组内最多上报10份故障信息。

Z
zengyawen 已提交
88 89
**系统能力:** SystemCapability.HiviewDFX.Hiview.FaultLogger

Z
zengyawen 已提交
90 91 92 93 94 95 96 97 98 99 100
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 <br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常 |
Y
YOUR_NAME 已提交
101

Z
zengyawen 已提交
102
**示例:**
Y
YOUR_NAME 已提交
103

Z
zengyawen 已提交
104
```js
Y
YOUR_NAME 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
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 ts: " + value[i].ts);
	    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);
	}
Y
YOUR_NAME 已提交
121 122
    }
}
Y
YOUR_NAME 已提交
123
```