應(yīng)用事件打點

2024-01-23 17:20 更新

本模塊提供了應(yīng)用事件打點能力,包括應(yīng)用事件落盤、應(yīng)用事件訂閱、應(yīng)用事件清理、打點功能配置等功能。

說明

本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent';

hiAppEvent.write

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

應(yīng)用事件打點方法,將事件寫入到當(dāng)天的事件文件中,可接收AppEventInfo類型的事件對象,使用callback方式作為異步回調(diào)。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

info

AppEventInfo

應(yīng)用事件對象。

callback

AsyncCallback<void>

打點回調(diào)函數(shù)。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼。

錯誤碼ID

錯誤信息

11100001

Function is disabled.

11101001

Invalid event domain.

11101002

Invalid event name.

11101003

Invalid number of event parameters.

11101004

Invalid string length of the event parameter.

11101005

Invalid event parameter name.

11101006

Invalid array length of the event parameter.

示例:

  1. hiAppEvent.write({
  2. domain: "test_domain",
  3. name: "test_event",
  4. eventType: hiAppEvent.EventType.FAULT,
  5. params: {
  6. int_data: 100,
  7. str_data: "strValue"
  8. }
  9. }, (err) => {
  10. if (err) {
  11. console.error(`code: ${err.code}, message: ${err.message}`);
  12. return;
  13. }
  14. console.log(`success to write event`);
  15. });

hiAppEvent.write

write(info: AppEventInfo): Promise<void>

應(yīng)用事件打點方法,將事件寫入到當(dāng)天的事件文件中,可接收AppEventInfo類型的事件對象,使用Promise方式作為異步回調(diào)。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

info

AppEventInfo

應(yīng)用事件對象。

返回值:

類型

說明

Promise<void>

Promise對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼。

錯誤碼ID

錯誤信息

11100001

Function is disabled.

11101001

Invalid event domain.

11101002

Invalid event name.

11101003

Invalid number of event parameters.

11101004

Invalid string length of the event parameter.

11101005

Invalid event parameter name.

11101006

Invalid array length of the event parameter.

示例:

  1. hiAppEvent.write({
  2. domain: "test_domain",
  3. name: "test_event",
  4. eventType: hiAppEvent.EventType.FAULT,
  5. params: {
  6. int_data: 100,
  7. str_data: "strValue"
  8. }
  9. }).then(() => {
  10. console.log(`success to write event`);
  11. }).catch((err) => {
  12. console.error(`code: ${err.code}, message: ${err.message}`);
  13. });

AppEventInfo

此接口提供了應(yīng)用事件信息的參數(shù)選項。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

domain

string

事件領(lǐng)域。事件領(lǐng)域名稱支持?jǐn)?shù)字、小寫字母、下劃線字符,需要以小寫字母開頭且不能以下劃線結(jié)尾,長度非空且不超過16個字符。

name

string

事件名稱。事件名稱支持?jǐn)?shù)字、小寫字母、下劃線字符,需要以小寫字母開頭且不能以下劃線結(jié)尾,長度非空且不超過48個字符。

eventType

EventType

事件類型。

params

object

事件參數(shù)對象,每個事件參數(shù)包括參數(shù)名和參數(shù)值,其規(guī)格定義如下:

- 參數(shù)名為string類型,只支持?jǐn)?shù)字、小寫字母、下劃線字符,需要以小寫字母開頭且不能以下劃線結(jié)尾,長度非空且不超過16個字符。

- 參數(shù)值支持string、number、boolean、數(shù)組類型,string類型參數(shù)長度需在8*1024個字符以內(nèi),超出會做丟棄處理;number類型參數(shù)取值需在Number.MIN_SAFE_INTEGER~Number.MAX_SAFE_INTEGER范圍內(nèi),超出可能會產(chǎn)生不確定值;數(shù)組類型參數(shù)中的元素類型只能全為string、number、boolean中的一種,且元素個數(shù)需在100以內(nèi),超出會做丟棄處理。

- 參數(shù)個數(shù)需在32個以內(nèi),超出的參數(shù)會做丟棄處理。

hiAppEvent.configure

configure(config: ConfigOption): void

應(yīng)用事件打點配置方法,可用于配置打點開關(guān)、目錄存儲配額大小等功能。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

config

ConfigOption

應(yīng)用事件打點配置項對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼。

錯誤碼ID

錯誤信息

11103001

Invalid max storage quota value.

示例:

  1. // 配置打點開關(guān)為關(guān)閉狀態(tài)
  2. hiAppEvent.configure({
  3. disable: true
  4. });
  5. // 配置文件目錄存儲配額為100M
  6. hiAppEvent.configure({
  7. maxStorage: '100M'
  8. });

ConfigOption

此接口提供了對應(yīng)用事件打點功能的配置選項。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

disable

boolean

打點功能開關(guān),默認(rèn)值為false。true:關(guān)閉打點功能,false:不關(guān)閉打點功能。

maxStorage

string

打點數(shù)據(jù)存放目錄的配額大小,默認(rèn)值為“10M”。

在目錄大小超出配額后,下次打點會觸發(fā)對目錄的清理操作:按從舊到新的順序逐個刪除打點數(shù)據(jù)文件,直到目錄大小不超出配額時結(jié)束。

hiAppEvent.addWatcher

addWatcher(watcher: Watcher): AppEventPackageHolder

添加應(yīng)用事件觀察者方法,可用于訂閱應(yīng)用事件。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

watcher

Watcher

應(yīng)用事件觀察者。

返回值:

類型

說明

AppEventPackageHolder

訂閱數(shù)據(jù)持有者,訂閱失敗時返回null。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼

錯誤碼ID

錯誤信息

11102001

Invalid watcher name.

11102002

Invalid filtering event domain.

11102003

Invalid row value.

11102004

Invalid size value.

11102005

Invalid timeout value.

示例:

  1. // 1. 如果觀察者傳入了回調(diào)的相關(guān)參數(shù),則可以選擇在自動觸發(fā)的回調(diào)函數(shù)中對訂閱事件進(jìn)行處理
  2. hiAppEvent.addWatcher({
  3. name: "watcher1",
  4. appEventFilters: [
  5. {
  6. domain: "test_domain",
  7. eventTypes: [hiAppEvent.EventType.FAULT, hiAppEvent.EventType.BEHAVIOR]
  8. }
  9. ],
  10. triggerCondition: {
  11. row: 10,
  12. size: 1000,
  13. timeOut: 1
  14. },
  15. onTrigger: function (curRow, curSize, holder) {
  16. if (holder == null) {
  17. console.error("holder is null");
  18. return;
  19. }
  20. let eventPkg = null;
  21. while ((eventPkg = holder.takeNext()) != null) {
  22. console.info(`eventPkg.packageId=${eventPkg.packageId}`);
  23. console.info(`eventPkg.row=${eventPkg.row}`);
  24. console.info(`eventPkg.size=${eventPkg.size}`);
  25. for (const eventInfo of eventPkg.data) {
  26. console.info(`eventPkg.data=${eventInfo}`);
  27. }
  28. }
  29. }
  30. });
  31. // 2. 如果觀察者未傳入回調(diào)的相關(guān)參數(shù),則可以選擇使用返回的holder對象手動去處理訂閱事件
  32. let holder = hiAppEvent.addWatcher({
  33. name: "watcher2",
  34. });
  35. if (holder != null) {
  36. let eventPkg = null;
  37. while ((eventPkg = holder.takeNext()) != null) {
  38. console.info(`eventPkg.packageId=${eventPkg.packageId}`);
  39. console.info(`eventPkg.row=${eventPkg.row}`);
  40. console.info(`eventPkg.size=${eventPkg.size}`);
  41. for (const eventInfo of eventPkg.data) {
  42. console.info(`eventPkg.data=${eventInfo}`);
  43. }
  44. }
  45. }

hiAppEvent.removeWatcher

removeWatcher(watcher: Watcher): void

移除應(yīng)用事件觀察者方法,可用于取消訂閱應(yīng)用事件。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

watcher

Watcher

應(yīng)用事件觀察者。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼

錯誤碼ID

錯誤信息

11102001

Invalid watcher name.

示例:

  1. // 1. 定義一個應(yīng)用事件觀察者
  2. let watcher = {
  3. name: "watcher1",
  4. }
  5. // 2. 添加一個應(yīng)用事件觀察者來訂閱事件
  6. hiAppEvent.addWatcher(watcher);
  7. // 3. 移除該應(yīng)用事件觀察者以取消訂閱事件
  8. hiAppEvent.removeWatcher(watcher);

Watcher

此接口提供了應(yīng)用事件觀察者的參數(shù)選項。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

name

string

觀察者名稱,用于唯一標(biāo)識觀察者。

triggerCondition

TriggerCondition

訂閱回調(diào)觸發(fā)條件,需要與回調(diào)函數(shù)一同傳入才會生效。

appEventFilters

AppEventFilter[]

訂閱過濾條件,在需要對訂閱事件進(jìn)行過濾時傳入。

onTrigger

(curRow: number, curSize: number, holder: AppEventPackageHolder) => void

訂閱回調(diào)函數(shù),需要與回調(diào)觸發(fā)條件一同傳入才會生效,函數(shù)入?yún)⒄f明如下:

curRow:在本次回調(diào)觸發(fā)時的訂閱事件總數(shù)量;

curSize:在本次回調(diào)觸發(fā)時的訂閱事件總大小,單位為byte;

holder:訂閱數(shù)據(jù)持有者對象,可以通過其對訂閱事件進(jìn)行處理。

TriggerCondition

此接口提供了回調(diào)觸發(fā)條件的參數(shù)選項,只要滿足任一條件就會觸發(fā)訂閱回調(diào)。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

row

number

滿足觸發(fā)回調(diào)的事件總數(shù)量。

size

number

滿足觸發(fā)回調(diào)的事件總大小,單位為byte。

timeOut

number

滿足觸發(fā)回調(diào)的超時時長,單位為30s。

AppEventFilter

此接口提供了過濾應(yīng)用事件的參數(shù)選項。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

domain

string

需要訂閱的事件領(lǐng)域。

eventTypes

EventType[]

需要訂閱的事件類型集合。

AppEventPackageHolder

訂閱數(shù)據(jù)持有者類,用于對訂閱事件進(jìn)行處理。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

constructor

constructor(watcherName: string)

類構(gòu)造函數(shù),在添加應(yīng)用事件觀察者時,會由系統(tǒng)自動調(diào)用來創(chuàng)建一個該觀察者對應(yīng)的訂閱數(shù)據(jù)持有者對象,并返回給開發(fā)者。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

watcherName

string

觀察者名稱。

示例:

  1. let holder = hiAppEvent.addWatcher({
  2. name: "watcher",
  3. });

setSize

setSize(size: number): void

設(shè)置每次取出的應(yīng)用事件包的數(shù)據(jù)大小閾值。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

參數(shù):

參數(shù)名

類型

必填

說明

size

number

數(shù)據(jù)大小閾值,單位為byte,默認(rèn)值為512*1024。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見應(yīng)用事件打點錯誤碼

錯誤碼ID

錯誤信息

11104001

Invalid size value.

示例:

  1. let holder = hiAppEvent.addWatcher({
  2. name: "watcher",
  3. });
  4. holder.setSize(1000);

takeNext

takeNext(): AppEventPackage

根據(jù)設(shè)置的數(shù)據(jù)大小閾值來取出訂閱事件數(shù)據(jù),當(dāng)訂閱事件數(shù)據(jù)全部被取出時返回null作為標(biāo)識。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

示例:

  1. let holder = hiAppEvent.addWatcher({
  2. name: "watcher",
  3. });
  4. let eventPkg = holder.takeNext();

AppEventPackage

此接口提供了訂閱返回的應(yīng)用事件包的參數(shù)定義。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

必填

說明

packageId

number

事件包ID,從0開始自動遞增。

row

number

事件包的事件數(shù)量。

size

number

事件包的事件大小,單位為byte。

data

string[]

事件包的事件信息。

hiAppEvent.clearData

clearData(): void

應(yīng)用事件打點數(shù)據(jù)清理方法,將應(yīng)用存儲在本地的打點數(shù)據(jù)進(jìn)行清除。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

示例:

  1. hiAppEvent.clearData();

EventType

事件類型枚舉。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

說明

FAULT

1

故障類型事件。

STATISTIC

2

統(tǒng)計類型事件。

SECURITY

3

安全類型事件。

BEHAVIOR

4

行為類型事件。

event

此接口提供了所有預(yù)定義事件的事件名稱常量。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

說明

USER_LOGIN

string

用戶登錄事件。

USER_LOGOUT

string

用戶登出事件。

DISTRIBUTED_SERVICE_START

string

分布式服務(wù)啟動事件。

param

此接口提供了所有預(yù)定義參數(shù)的參數(shù)名稱常量。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiAppEvent

名稱

類型

說明

USER_ID

string

用戶自定義ID。

DISTRIBUTED_SERVICE_NAME

string

分布式服務(wù)名稱。

DISTRIBUTED_SERVICE_INSTANCE_ID

string

分布式服務(wù)實例ID。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號