js-apis-hisysevent.md 12.5 KB
Newer Older
S
shawn_he 已提交
1
# 系统事件打点
S
shawn_he 已提交
2

S
shawn_he 已提交
3
本模块提供了系统事件打点能力,包括系统事件的埋点、落盘系统事件的订阅及已落盘的系统事件的查询能力。
S
shawn_he 已提交
4

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


S
shawn_he 已提交
10
## 导入模块
S
shawn_he 已提交
11 12 13 14 15 16 17

```js
import hiSysEvent from '@ohos.hiSysEvent';
```

## EventType

S
shawn_he 已提交
18
系统事件类型枚举。
S
shawn_he 已提交
19

S
shawn_he 已提交
20
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
21

S
shawn_he 已提交
22
| 名称 | 值 | 说明 |
S
shawn_he 已提交
23
| -------- | -------- | -------- |
S
shawn_he 已提交
24 25 26 27
| FAULT | 1 | 错误事件类型。 |
| STATISTIC | 2 | 统计事件类型。 |
| SECURITY | 3 | 安全事件类型。 |
| BEHAVIOR | 4 | 用户行为事件类型。 |
S
shawn_he 已提交
28 29 30

## SysEventInfo

S
shawn_he 已提交
31
系统事件信息对象接口。
S
shawn_he 已提交
32

S
shawn_he 已提交
33
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
34

S
shawn_he 已提交
35
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
36
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
37 38 39 40
| domain | string | 是 | 事件领域。 |
| name | string | 是 | 事件名称。 |
| eventType | [EventType](#eventtype) | 是 | 事件类型。 |
| params | object | 否 | 事件参数。 |
S
shawn_he 已提交
41 42 43 44 45 46


## hiSysEvent.write

write(info: SysEventInfo, callback: AsyncCallback<void>): void

S
shawn_he 已提交
47
系统事件打点方法,接收[SysEventInfo](#syseventinfo)类型的对象作为事件参数,使用callback方式作为异步回调。
S
shawn_he 已提交
48

S
shawn_he 已提交
49
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
50

S
shawn_he 已提交
51
**参数:**
S
shawn_he 已提交
52

S
shawn_he 已提交
53
| 参数名    | 类型                      | 必填 | 说明                                                         |
S
shawn_he 已提交
54
| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
S
shawn_he 已提交
55 56
| info | [SysEventInfo](#syseventinfo) | 是 | 系统事件。 |
| callback  | AsyncCallback&lt;void&gt; | 是 | 回调函数,可以在回调函数中处理接口返回值。<br/>- 0表示事件校验成功,事件正常异步写入事件文件;<br/>- 正值表示事件打点存在异常,但可以正常写入;<br/>- 负值表示事件打点失败。 |
S
shawn_he 已提交
57

S
shawn_he 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
**错误码:**

以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------------------------------------------------- |
| 11200001 | Invalid event domain.                                            |
| 11200002 | Invalid event name.                                              |
| 11200003 | Abnormal environment.                                            |
| 11200004 | Length of the event is over limit.                               |
| 11200051 | Invalid event parameter.                                         |
| 11200052 | Size of the event parameter of the string type is over limit.    |
| 11200053 | Count of event parameters is over limit.                         |
| 11200054 | Count of event parameter of the array type is over limit.        |

**示例:**
S
shawn_he 已提交
74 75 76 77

```js
import hiSysEvent from '@ohos.hiSysEvent';

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
try {
    hiSysEvent.write({
        domain: "RELIABILITY",
        name: "STACK",
        eventType: hiSysEvent.EventType.FAULT,
        params: {
            PID: 487,
            UID: 103,
            PACKAGE_NAME: "com.ohos.hisysevent.test",
            PROCESS_NAME: "syseventservice",
            MSG: "no msg."
        }
    }, (err, val) => {
        // do something here.
    })
} catch (error) {
    console.error(`error code: ${error.code}, error msg: ${error.message}`);
}
S
shawn_he 已提交
96 97 98 99 100 101 102
```


## hiSysEvent.write

write(info: SysEventInfo): Promise&lt;void&gt;

S
shawn_he 已提交
103
系统事件打点方法,接收[SysEventInfo](#syseventinfo)类型的对象作为事件参数,使用promise方式作为异步回调。
S
shawn_he 已提交
104

S
shawn_he 已提交
105
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
106

S
shawn_he 已提交
107
**参数:**
S
shawn_he 已提交
108

S
shawn_he 已提交
109
| 参数名    | 类型                    | 必填 | 说明 |
S
shawn_he 已提交
110
| --------- | ----------------------- | ---- | --------------- |
S
shawn_he 已提交
111
| info | [SysEventInfo](#syseventinfo) | 是   | 系统事件。 |
S
shawn_he 已提交
112

S
shawn_he 已提交
113
**返回值:**
S
shawn_he 已提交
114

S
shawn_he 已提交
115
| 类型                | 说明                                                         |
S
shawn_he 已提交
116
| ------------------- | ------------------------------------------------------------ |
S
shawn_he 已提交
117 118 119
| Promise&lt;void&gt; | Promise实例,可以在其then()、catch()方法中分别对系统事件写入成功、写入异常的回调进行处理。 |

**错误码:**
S
shawn_he 已提交
120

S
shawn_he 已提交
121 122 123 124 125 126 127 128 129 130 131 132 133 134
以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------------------------------- |
| 11200001 | Invalid event domain.                                            |
| 11200002 | Invalid event name.                                              |
| 11200003 | Abnormal environment.                                            |
| 11200004 | Length of the event is over limit.                               |
| 11200051 | Invalid event parameter.                                         |
| 11200052 | Size of the event parameter of the string type is over limit.    |
| 11200053 | Count of event parameters is over limit.                         |
| 11200054 | Count of event parameter of the array type is over limit.        |

**示例:**
S
shawn_he 已提交
135 136 137 138

```js
import hiSysEvent from '@ohos.hiSysEvent';

139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
try {
    hiSysEvent.write({
        domain: "RELIABILITY",
        name: "STACK",
        eventType: hiSysEvent.EventType.FAULT,
        params: {
            PID: 487,
            UID: 103,
            PACKAGE_NAME: "com.ohos.hisysevent.test",
            PROCESS_NAME: "syseventservice",
            MSG: "no msg."
        }
    }).then(
        (val) => {
            // do something here.
        }
    ).catch(
        (err) => {
            // do something here.
        }
    )
} catch (error) {
    console.error(`error code: ${error.code}, error msg: ${error.message}`);
}
S
shawn_he 已提交
163 164 165 166
```

## RuleType

S
shawn_he 已提交
167
匹配规则类型枚举。
S
shawn_he 已提交
168

S
shawn_he 已提交
169
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
170

S
shawn_he 已提交
171
| 名称 | 值 | 说明 |
S
shawn_he 已提交
172
| -------- | -------- | -------- |
S
shawn_he 已提交
173 174 175
| WHOLE_WORD | 1 | 全词匹配类型。 |
| PREFIX | 2 | 前缀匹配类型。 |
| REGULAR | 3 | 正则匹配类型。 |
S
shawn_he 已提交
176 177 178

## WatchRule

S
shawn_he 已提交
179
系统事件订阅规则对象接口。
S
shawn_he 已提交
180

S
shawn_he 已提交
181
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
182

S
shawn_he 已提交
183
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
184
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
185 186 187 188
| domain | string | 是 | 事件领域。 |
| name | string | 是 | 事件名称。 |
| tag | string | 否 | 事件标签。 |
| ruleType | [RuleType](#ruletype) | 是 | 匹配规则类型。 |
S
shawn_he 已提交
189 190 191

## Watcher

S
shawn_he 已提交
192
系统事件订阅者对象接口。
S
shawn_he 已提交
193

S
shawn_he 已提交
194
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
195

S
shawn_he 已提交
196
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
197
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
198 199 200
| rules | [WatchRule](#watchrule)[] | 是 | 订阅对象数组,每个订阅者对象包含多个订阅规则。 |
| onEvent | function | 是 | 订阅事件的回调方法(info: [SysEventInfo](#syseventinfo)) => void。 |
| onServiceDied | function | 是 | 系统事件服务关闭的回调方法() => void。 |
S
shawn_he 已提交
201 202 203

## hiSysEvent.addWatcher

S
shawn_he 已提交
204
addWatcher(watcher: Watcher): void
S
shawn_he 已提交
205

S
shawn_he 已提交
206
订阅系统事件,接收[Watcher](#watcher)类型的对象作为事件参数。
S
shawn_he 已提交
207

S
shawn_he 已提交
208
**需要权限:** ohos.permission.READ_DFX_SYSEVENT
S
shawn_he 已提交
209

S
shawn_he 已提交
210
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
211

S
shawn_he 已提交
212
**参数:**
S
shawn_he 已提交
213

S
shawn_he 已提交
214
| 参数名 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
215
| ------ | ----------------------------- | ---- | ------------------------ |
S
shawn_he 已提交
216 217 218 219 220
| watcher | [Watcher](#watcher) | 是 | 系统事件订阅者对象。 |

**错误码:**

以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)
S
shawn_he 已提交
221

S
shawn_he 已提交
222 223 224 225 226 227
| 错误码ID | 错误信息 |
| -------- | ----------------------------------- |
| 11200101 | Count of watchers is over limit.    |
| 11200102 | Count of watch rules is over limit. |

**示例:**
S
shawn_he 已提交
228 229 230 231 232

```js
import hiSysEvent from '@ohos.hiSysEvent';

let watcher = {
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
    rules: [{
        domain: "RELIABILITY",
        name: "STACK",
        tag: "STABILITY",
        ruleType: hiSysEvent.RuleType.WHOLE_WORD,
    }],
    onEvent: (info) => {
        // do something here.
    },
    onServiceDied: () => {
        // do something here.
    }
}
try {
    hiSysEvent.addWatcher(watcher)
} catch (error) {
    console.error(`error code: ${error.code}, error msg: ${error.message}`);
S
shawn_he 已提交
250 251 252 253 254
}
```

## hiSysEvent.removeWatcher

S
shawn_he 已提交
255 256 257 258 259 260 261
removeWatcher(watcher: Watcher): void

取消订阅系统事件,接收[Watcher](#watcher)类型的对象作为事件参数。

**需要权限:** ohos.permission.READ_DFX_SYSEVENT

**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
262

S
shawn_he 已提交
263
**参数:**
S
shawn_he 已提交
264

S
shawn_he 已提交
265 266 267
| 参数名 | 类型  | 必填 | 说明  |
| ------ | ------------- | ---- | ------------------------- |
| watcher | [Watcher](#watcher) | 是 | 系统事件订阅者对象。 |
S
shawn_he 已提交
268

S
shawn_he 已提交
269
**错误码:**
S
shawn_he 已提交
270

S
shawn_he 已提交
271
以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)
S
shawn_he 已提交
272

S
shawn_he 已提交
273 274 275
| 错误码ID | 错误信息 |
| -------- | --------------------------- |
| 11200201 | The watcher does not exist. |
S
shawn_he 已提交
276

S
shawn_he 已提交
277
**示例:**
S
shawn_he 已提交
278 279 280 281 282

```js
import hiSysEvent from '@ohos.hiSysEvent';

let watcher = {
283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
    rules: [{
        domain: "RELIABILITY",
        name: "STACK",
        tag: "STABILITY",
        ruleType: hiSysEvent.RuleType.WHOLE_WORD,
    }],
    onEvent: (info) => {
        // do something here.
    },
    onServiceDied: () => {
        // do something here.
    }
}
try {
    hiSysEvent.addWatcher(watcher)
    hiSysEvent.removeWatcher(watcher)
} catch (error) {
    console.error(`error code: ${error.code}, error msg: ${error.message}`);
S
shawn_he 已提交
301 302 303 304 305
}
```

## QueryArg

S
shawn_he 已提交
306
系统事件查询参数对象接口。
S
shawn_he 已提交
307

S
shawn_he 已提交
308
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
309

S
shawn_he 已提交
310
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
311
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
312 313 314
| beginTime | number | 是 | 查询的系统事件起始时间(13位时间戳)。 |
| endTime | number | 是 | 查询的系统事件结束时间(13位时间戳)。 |
| maxEvents | number | 是 | 查询的系统事件最多条数。 |
S
shawn_he 已提交
315 316 317

## QueryRule 

S
shawn_he 已提交
318
系统事件查询规则对象接口。
S
shawn_he 已提交
319

S
shawn_he 已提交
320
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
321

S
shawn_he 已提交
322
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
323
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
324 325
| domain | string | 是 | 查询包含的事件领域。 |
| names | string[] | 是 | 查询所包含的多个事件名称,每个查询规则对象包含多个系统事件名称。 |
S
shawn_he 已提交
326 327 328

## Querier

S
shawn_he 已提交
329
系统事件查询者对象接口。
S
shawn_he 已提交
330

S
shawn_he 已提交
331
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
332

S
shawn_he 已提交
333
| 名称 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
334
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
335 336
| onQuery | function | 是 | 返回查询到的系统事件的回调方法(infos: [SysEventInfo](#syseventinfo)[]) => void。 |
| onComplete | function | 是 | 查询结果统计的回调方法(reason: number, total: number) => void。 |
S
shawn_he 已提交
337 338 339

## hiSysEvent.query

S
shawn_he 已提交
340
query(queryArg: QueryArg, rules: QueryRule[], querier: Querier): void
S
shawn_he 已提交
341

S
shawn_he 已提交
342
查询系统事件。
S
shawn_he 已提交
343

S
shawn_he 已提交
344
**需要权限:** ohos.permission.READ_DFX_SYSEVENT
S
shawn_he 已提交
345

S
shawn_he 已提交
346
**系统能力:** SystemCapability.HiviewDFX.HiSysEvent
S
shawn_he 已提交
347

S
shawn_he 已提交
348
**参数:**
S
shawn_he 已提交
349

S
shawn_he 已提交
350
| 参数名 | 类型 | 必填 | 说明 |
S
shawn_he 已提交
351
| ------ | ----------------------------- | ---- | ------------------------ |
S
shawn_he 已提交
352 353 354
| queryArg | [QueryArg](#queryarg) | 是   | 查询需要配置的查询参数。 |
| rules | [QueryRule](#queryrule)[] | 是   | 查询规则数组,每次查询可配置多个查询规则。 |
| querier | [Querier](#querier) | 是   | 查询者对象,包含查询结果及结束的相关回调。 |
S
shawn_he 已提交
355

S
shawn_he 已提交
356 357 358 359 360 361 362 363 364 365 366 367
**错误码:**

以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)

| 错误码ID | 错误信息 |
| -------- | ------------------------------------------- |
| 11200301 | Count of query rules is over limit.         |
| 11200302 | Invalid query rule.                         |
| 11200303 | Count of concurrent queriers is over limit. |
| 11200304 | Query frequency is over limit.              |

**示例:**
S
shawn_he 已提交
368 369 370 371

```js
import hiSysEvent from '@ohos.hiSysEvent';

372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404
try {
    hiSysEvent.write({
        domain: "RELIABILITY",
        name: "STACK",
        eventType: hiSysEvent.EventType.FAULT,
        params: {
            PID: 487,
            UID: 103,
            PACKAGE_NAME: "com.ohos.hisysevent.test",
            PROCESS_NAME: "syseventservice",
            MSG: "no msg."
        }
    }, (err, val) => {
        // do something here.
    })
    hiSysEvent.query({
        beginTime: -1,
        endTime: -1,
        maxEvents: 5,
    }, [{
        domain: "RELIABILITY",
        names: ["STACK"],
    }], {
        onQuery: function (infos) {
            // do something here.
        },
        onComplete: function(reason, total) {
            // do something here.
        }
    })
} catch (error) {
    console.error(`error code: ${error.code}, error msg: ${error.message}`);
}
S
shawn_he 已提交
405
```