js-apis-faultLogger.md 9.2 KB
Newer Older
1 2 3 4
# @ohos.faultLogger (故障日志获取)

> **说明:**
>
Y
YOUR_NAME 已提交
5 6 7 8
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

9
```ts
Y
YOUR_NAME 已提交
10 11 12
import faultLogger from '@ohos.faultLogger'
```

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

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

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

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

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

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

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

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

Z
zengyawen 已提交
43
## faultLogger.query<sup>9+</sup>
Y
YOUR_NAME 已提交
44

Z
zengyawen 已提交
45
query(faultType: FaultType, callback: AsyncCallback&lt;Array&lt;FaultLogInfo&gt;&gt;) : void
46

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

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

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

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

Z
zengyawen 已提交
58 59 60 61 62 63 64 65
**错误码:**

以下错误码的详细介绍参见[ohos.faultLogger错误码](../errorcodes/errorcode-faultlogger.md)

| 错误码ID | 错误信息 |
| --- | --- |
| 10600001 | The service is not started or is faulty |

Z
zengyawen 已提交
66
**示例:**
Y
YOUR_NAME 已提交
67

68 69 70 71 72
```ts
import faultLogger from '@ohos.faultLogger'
import { BusinessError } from '@ohos.base'

function queryFaultLogCallback(error: BusinessError, value: Array<faultLogger.FaultLogInfo>) {
Y
YOUR_NAME 已提交
73 74 75 76
    if (error) {
        console.info('error is ' + error);
    } else {
        console.info("value length is " + value.length);
77
        let len: number = value.length;
Y
YOUR_NAME 已提交
78 79 80 81 82
        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);
83
            console.info("Log timestamp: " + value[i].timestamp);
Y
YOUR_NAME 已提交
84 85 86 87 88 89 90
            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);
        }
    }
}
Z
zengyawen 已提交
91 92 93
try {
    faultLogger.query(faultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
} catch (err) {
94
    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
Z
zengyawen 已提交
95
}
Y
YOUR_NAME 已提交
96 97
```

Z
zengyawen 已提交
98
## faultLogger.query<sup>9+</sup>
Y
YOUR_NAME 已提交
99

Z
zengyawen 已提交
100
query(faultType: FaultType) : Promise&lt;Array&lt;FaultLogInfo&gt;&gt;
101

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

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

Z
zengyawen 已提交
106 107 108 109 110 111 112 113 114 115 116
**参数:**

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

**返回值:**

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

Z
zengyawen 已提交
118 119 120 121 122 123 124 125
**错误码:**

以下错误码的详细介绍参见[ohos.faultLogger错误码](../errorcodes/errorcode-faultlogger.md)

| 错误码ID | 错误信息 |
| --- | --- |
| 10600001 | The service is not started or is faulty |

Z
zengyawen 已提交
126
**示例:**
Y
YOUR_NAME 已提交
127

128 129 130 131
```ts
import faultLogger from '@ohos.faultLogger'
import { BusinessError } from '@ohos.base'

Y
YOUR_NAME 已提交
132
async function getLog() {
Z
zengyawen 已提交
133
    try {
134
        let value: Array<faultLogger.FaultLogInfo> = await faultLogger.query(faultLogger.FaultType.JS_CRASH);
Z
zengyawen 已提交
135 136
        if (value) {
            console.info("value length is " + value.length);
137
            let len: number = value.length;
Z
zengyawen 已提交
138 139 140 141 142 143 144 145 146 147 148
            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);
            }
149
        }
Z
zengyawen 已提交
150
    } catch (err) {
151
        console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
152 153 154 155
    }
}
```

Z
zengyawen 已提交
156
## faultLogger.querySelfFaultLog<sup>(deprecated)</sup>
157

Z
zengyawen 已提交
158 159 160 161 162
querySelfFaultLog(faultType: FaultType, callback: AsyncCallback&lt;Array&lt;FaultLogInfo&gt;&gt;) : void

> **说明:**
>
> 从 API Version 9 开始废弃,建议使用[faultLogger.query](#faultloggerquery9)替代。
163 164 165 166 167 168 169 170 171 172

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

**系统能力:** SystemCapability.HiviewDFX.Hiview.FaultLogger

**参数:**

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

**示例:**

177 178 179 180 181
```ts
import faultLogger from '@ohos.faultLogger'
import { BusinessError } from '@ohos.base'

function queryFaultLogCallback(error: BusinessError, value: Array<faultLogger.FaultLogInfo>) {
182 183 184 185
    if (error) {
        console.info('error is ' + error);
    } else {
        console.info("value length is " + value.length);
186
        let len: number = value.length;
187 188 189 190 191 192 193 194 195 196 197 198 199
        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);
        }
    }
}
Z
zengyawen 已提交
200
faultLogger.querySelfFaultLog(faultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
201 202
```

Z
zengyawen 已提交
203
## faultLogger.querySelfFaultLog<sup>(deprecated)</sup>
204

Z
zengyawen 已提交
205 206 207 208 209
querySelfFaultLog(faultType: FaultType) : Promise&lt;Array&lt;FaultLogInfo&gt;&gt;

> **说明:**
>
> 从 API Version 9 开始废弃,建议使用[faultLogger.query](#faultloggerquery9-1)替代。
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228

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

**系统能力:** SystemCapability.HiviewDFX.Hiview.FaultLogger

**参数:**

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

**返回值:**

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

**示例:**

229 230 231
```ts
import faultLogger from '@ohos.faultLogger'

232
async function getLog() {
233
    let value: Array<faultLogger.FaultLogInfo> = await faultLogger.querySelfFaultLog(faultLogger.FaultType.JS_CRASH);
Z
zengyawen 已提交
234 235
    if (value) {
        console.info("value length is " + value.length);
236
        let len: number = value.length;
Z
zengyawen 已提交
237 238 239 240 241 242 243 244 245 246
        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);
247
        }
Y
YOUR_NAME 已提交
248 249
    }
}
Z
zengyawen 已提交
250
```