• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.faultLogger (故障日志获取)
2
3应用可以使用faultLogger接口查询系统侧缓存的当前应用的故障日志。接口以应用包名和系统分配的UID作为唯一键值。
4系统侧保存的应用故障日志数量受系统日志的压力限制,推荐使用[@ohos.hiviewdfx.hiAppEvent](js-apis-hiviewdfx-hiappevent.md)订阅APP_CRASH及APP_FREEZE等故障事件。
5
6> **说明:**
7>
8> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9> 本模块接口从API version 18开始废弃使用, 该接口不再维护。后续版本推荐使用[@ohos.hiviewdfx.hiAppEvent](js-apis-hiviewdfx-hiappevent.md)订阅APP_CRASH,APP_FREEZE事件。
10
11## 导入模块
12
13```ts
14import { FaultLogger } from '@kit.PerformanceAnalysisKit';
15```
16
17## FaultType
18
19故障类型枚举。
20
21**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
22
23| 名称 | 值 | 说明 |
24| -------- | -------- | -------- |
25| NO_SPECIFIC | 0 | 不区分故障类型。 |
26| CPP_CRASH | 2 | C++程序故障类型。 |
27| JS_CRASH | 3 | JS程序故障类型。 |
28| APP_FREEZE | 4 | 应用程序卡死故障类型。 |
29
30## FaultLogInfo
31
32故障信息数据结构,获取到的故障信息的数据结构。
33
34**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
35
36| 名称 | 类型 | 必填 | 说明 |
37| -------- | -------- | -------- | -------- |
38| pid | number | 是 | 故障进程的进程id。 |
39| uid | number | 是 | 故障进程的用户id。 |
40| type | [FaultType](#faulttype) | 是 | 故障类型。 |
41| timestamp | number | 是 | 日志生成时的毫秒级时间戳。 |
42| reason | string | 是 | 发生故障的原因。 |
43| module | string | 是 | 发生故障的模块。 |
44| summary | string | 是 | 故障的概要。 |
45| fullLog | string | 是 | 故障日志全文。 |
46
47## FaultLogger.query<sup>9+</sup>
48
49query(faultType: FaultType, callback: AsyncCallback&lt;Array&lt;FaultLogInfo&gt;&gt;) : void
50
51获取当前应用故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。
52
53**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
54
55**参数:**
56
57| 参数名 | 类型 | 必填 | 说明 |
58| -------- | -------- | -------- | -------- |
59| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |
60| callback | AsyncCallback&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | 是 | 回调函数,在回调函数中获取故障信息数组。<br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常,error返回错误提示字符串。|
61
62**错误码:**
63
64以下错误码的详细介绍参见[faultLogger错误码](errorcode-faultlogger.md)。
65
66| 错误码ID | 错误信息 |
67| --- | --- |
68| 401 | The parameter check failed, Parameter type error. |
69| 801 | The specified SystemCapability name was not found. |
70| 10600001 | The service is not started or is faulty. |
71
72**示例:**
73
74```ts
75import { FaultLogger } from '@kit.PerformanceAnalysisKit';
76import { BusinessError } from '@kit.BasicServicesKit';
77
78function queryFaultLogCallback(error: BusinessError, value: Array<FaultLogger.FaultLogInfo>) {
79    if (error) {
80        console.info('error is ' + error);
81    } else {
82        console.info("value length is " + value.length);
83        let len: number = value.length;
84        for (let i = 0; i < len; i++) {
85            console.info("log: " + i);
86            console.info("Log pid: " + value[i].pid);
87            console.info("Log uid: " + value[i].uid);
88            console.info("Log type: " + value[i].type);
89            console.info("Log timestamp: " + value[i].timestamp);
90            console.info("Log reason: " + value[i].reason);
91            console.info("Log module: " + value[i].module);
92            console.info("Log summary: " + value[i].summary);
93            console.info("Log text: " + value[i].fullLog);
94        }
95    }
96}
97try {
98    FaultLogger.query(FaultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
99} catch (err) {
100    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
101}
102```
103
104## FaultLogger.query<sup>9+</sup>
105
106query(faultType: FaultType) : Promise&lt;Array&lt;FaultLogInfo&gt;&gt;
107
108获取当前应用故障信息,该方法通过Promise方式返回故障信息数组,故障信息数组内最多上报10份故障信息。
109
110**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
111
112**参数:**
113
114| 参数名 | 类型 | 必填 | 说明 |
115| -------- | -------- | -------- | -------- |
116| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |
117
118**返回值:**
119
120| 类型 | 说明 |
121| -------- | -------- |
122| Promise&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 <br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常。 |
123
124**错误码:**
125
126以下错误码的详细介绍参见[faultLogger错误码](errorcode-faultlogger.md)。
127
128| 错误码ID | 错误信息 |
129| --- | --- |
130| 401 | The parameter check failed, Parameter type error. |
131| 801 | The specified SystemCapability name was not found. |
132| 10600001 | The service is not started or is faulty. |
133
134**示例:**
135
136```ts
137import { FaultLogger } from '@kit.PerformanceAnalysisKit';
138import { BusinessError } from '@kit.BasicServicesKit';
139
140async function getLog() {
141  try {
142    let value: Array<FaultLogger.FaultLogInfo> = await FaultLogger.query(FaultLogger.FaultType.JS_CRASH);
143    if (value) {
144      console.info("value length is " + value.length);
145      let len: number = value.length;
146      for (let i = 0; i < len; i++) {
147        console.info("log: " + i);
148        console.info("Log pid: " + value[i].pid);
149        console.info("Log uid: " + value[i].uid);
150        console.info("Log type: " + value[i].type);
151        console.info("Log timestamp: " + value[i].timestamp);
152        console.info("Log reason: " + value[i].reason);
153        console.info("Log module: " + value[i].module);
154        console.info("Log summary: " + value[i].summary);
155        console.info("Log text: " + value[i].fullLog);
156      }
157    }
158  } catch (err) {
159    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
160  }
161}
162```
163
164## FaultLogger.querySelfFaultLog<sup>(deprecated)</sup>
165
166querySelfFaultLog(faultType: FaultType, callback: AsyncCallback&lt;Array&lt;FaultLogInfo&gt;&gt;) : void
167
168> **说明:**
169>
170> 从 API Version 9 开始废弃,建议使用[FaultLogger.query](#faultloggerquery9)替代。
171
172获取当前应用故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。
173
174**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
175
176**参数:**
177
178| 参数名 | 类型 | 必填 | 说明 |
179| -------- | -------- | -------- | -------- |
180| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |
181| callback | AsyncCallback&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | 是 | 回调函数,在回调函数中获取故障信息数组。<br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常,error返回错误提示字符串。|
182
183**示例:**
184
185```ts
186import { FaultLogger } from '@kit.PerformanceAnalysisKit';
187import { BusinessError } from '@kit.BasicServicesKit';
188
189function queryFaultLogCallback(error: BusinessError, value: Array<FaultLogger.FaultLogInfo>) {
190  if (error) {
191    console.info('error is ' + error);
192  } else {
193    console.info("value length is " + value.length);
194    let len: number = value.length;
195    for (let i = 0; i < len; i++) {
196      console.info("log: " + i);
197      console.info("Log pid: " + value[i].pid);
198      console.info("Log uid: " + value[i].uid);
199      console.info("Log type: " + value[i].type);
200      console.info("Log timestamp: " + value[i].timestamp);
201      console.info("Log reason: " + value[i].reason);
202      console.info("Log module: " + value[i].module);
203      console.info("Log summary: " + value[i].summary);
204      console.info("Log text: " + value[i].fullLog);
205    }
206  }
207}
208FaultLogger.querySelfFaultLog(FaultLogger.FaultType.JS_CRASH, queryFaultLogCallback);
209```
210
211## FaultLogger.querySelfFaultLog<sup>(deprecated)</sup>
212
213querySelfFaultLog(faultType: FaultType) : Promise&lt;Array&lt;FaultLogInfo&gt;&gt;
214
215> **说明:**
216>
217> 从 API Version 9 开始废弃,建议使用[FaultLogger.query](#faultloggerquery9-1)替代。
218
219获取当前应用故障信息,该方法通过Promise方式返回故障信息数组,故障信息数组内最多上报10份故障信息。
220
221**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger
222
223**参数:**
224
225| 参数名 | 类型 | 必填 | 说明 |
226| -------- | -------- | -------- | -------- |
227| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 |
228
229**返回值:**
230
231| 类型 | 说明 |
232| -------- | -------- |
233| Promise&lt;Array&lt;[FaultLogInfo](#faultloginfo)&gt;&gt; | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 <br/>-&nbsp;value拿到故障信息数组;value为undefined表示获取过程中出现异常。 |
234
235**示例:**
236
237```ts
238import { FaultLogger } from '@kit.PerformanceAnalysisKit';
239
240async function getLog() {
241  let value: Array<FaultLogger.FaultLogInfo> = await FaultLogger.querySelfFaultLog(FaultLogger.FaultType.JS_CRASH);
242  if (value) {
243    console.info("value length is " + value.length);
244    let len: number = value.length;
245    for (let i = 0; i < len; i++) {
246      console.info("log: " + i);
247      console.info("Log pid: " + value[i].pid);
248      console.info("Log uid: " + value[i].uid);
249      console.info("Log type: " + value[i].type);
250      console.info("Log timestamp: " + value[i].timestamp);
251      console.info("Log reason: " + value[i].reason);
252      console.info("Log module: " + value[i].module);
253      console.info("Log summary: " + value[i].summary);
254      console.info("Log text: " + value[i].fullLog);
255    }
256  }
257}
258```
259