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<Array<FaultLogInfo>>) : void 50 51获取当前应用故障信息,该方法通过回调方式获取故障信息数组,故障信息数组内最多上报10份故障信息。 52 53**系统能力**:SystemCapability.HiviewDFX.Hiview.FaultLogger 54 55**参数:** 56 57| 参数名 | 类型 | 必填 | 说明 | 58| -------- | -------- | -------- | -------- | 59| faultType | [FaultType](#faulttype) | 是 | 输入要查询的故障类型。 | 60| callback | AsyncCallback<Array<[FaultLogInfo](#faultloginfo)>> | 是 | 回调函数,在回调函数中获取故障信息数组。<br/>- 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<Array<FaultLogInfo>> 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<Array<[FaultLogInfo](#faultloginfo)>> | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 <br/>- 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<Array<FaultLogInfo>>) : 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<Array<[FaultLogInfo](#faultloginfo)>> | 是 | 回调函数,在回调函数中获取故障信息数组。<br/>- 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<Array<FaultLogInfo>> 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<Array<[FaultLogInfo](#faultloginfo)>> | Promise实例,可以在其then()方法中获取故障信息实例,也可以使用await。 <br/>- 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