harmony 鸿蒙@ohos.hiviewdfx.hiAppEvent (应用事件打点)

  • 2025-06-16
  • 浏览 (1)

@ohos.hiviewdfx.hiAppEvent (应用事件打点)

本模块提供应用打点和事件订阅能力,包括事件存储、事件订阅、事件清理、打点配置等功能。HiAppEvent将应用运行过程中触发的事件信息统一归纳到AppEventInfo中,并将事件分为系统事件和应用事件两类。

系统事件来源于系统服务,是系统预先定义的事件,这类事件信息中的事件参数对象params包含的字段已由各系统事件定义,具体字段含义在各系统事件指南的介绍中,例如崩溃事件介绍

应用事件来源于应用,是应用开发者自己定义的事件,这类事件信息支持自定义后通过Write打点接口进行配置设定,具体字段含义可结合开发者需求展开。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { hiAppEvent } from '@kit.PerformanceAnalysisKit';

hiAppEvent.addWatcher

addWatcher(watcher: Watcher): AppEventPackageHolder

添加事件观察者。可通过事件观察者的回调函数监听事件。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
watcher Watcher 事件观察者。

返回值:

类型 说明
AppEventPackageHolder 订阅数据持有者。订阅失败时返回null。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11102001 Invalid watcher name.
11102002 Invalid filtering event domain.
11102003 Invalid row value.
11102004 Invalid size value.
11102005 Invalid timeout value.

示例:

根据添加的事件观察者类型,目前有如下三种使用方法:

方法一:如果观察者传入了回调的相关参数,则可以选择在自动触发的回调函数中对订阅事件进行处理。

import { hilog } from '@kit.PerformanceAnalysisKit';

hiAppEvent.addWatcher({
  name: "watcher1",
  // 订阅过滤条件,这里是订阅了系统事件领域的应用崩溃事件
  appEventFilters: [
    {
      domain: hiAppEvent.domain.OS,
      names: [hiAppEvent.event.APP_CRASH]
    }
  ],
  // 设置触发onTrigger回调的条件,这里是当满足事件总数量达到10个或事件总大小达到1000byte或事件发生超过30s时会触发回调
  triggerCondition: {
    row: 10,
    size: 1000,
    timeOut: 1
  },
  // 实现onTrigger回调,结合triggerCondition使用,满足回调条件触发回调,接收到回调通知后,使用takeNext()查询订阅的事件
  onTrigger: (curRow: number, curSize: number, holder: hiAppEvent.AppEventPackageHolder) => {
    if (holder == null) {
      hilog.error(0x0000, 'hiAppEvent', "holder is null");
      return;
    }
    hilog.info(0x0000, 'hiAppEvent', `curRow=${curRow}, curSize=${curSize}`);
    let eventPkg: hiAppEvent.AppEventPackage|null = null;
    while ((eventPkg = holder.takeNext()) != null) {
      hilog.info(0x0000, 'hiAppEvent', `eventPkg.packageId=${eventPkg.packageId}`);
      hilog.info(0x0000, 'hiAppEvent', `eventPkg.row=${eventPkg.row}`);
      hilog.info(0x0000, 'hiAppEvent', `eventPkg.size=${eventPkg.size}`);
      for (const eventInfo of eventPkg.data) {
        hilog.info(0x0000, 'hiAppEvent', `eventPkg.data=${eventInfo}`);
      }
    }
  }
});

方法二:如果观察者未传入回调的相关参数,则可以选择使用返回的holder对象手动去处理订阅事件。
针对异常退出时产生的崩溃事件(hiAppEvent.event.APP_CRASH)和卡死事件(hiAppEvent.event.APP_FREEZE),系统捕获维测日志有一定耗时,典型情况下30s内完成,极端情况下2min左右完成。
在手动处理订阅事件的方法中,由于事件可能未生成或日志信息未抓取完成,建议在进程启动后延时重试调用takeNext()获取此类事件。

import { hilog } from '@kit.PerformanceAnalysisKit';

let holder: hiAppEvent.AppEventPackageHolder = hiAppEvent.addWatcher({
  name: "watcher2",
  // 订阅过滤条件,这里是订阅了系统事件领域的应用崩溃事件
  appEventFilters: [
    {
      domain: hiAppEvent.domain.OS,
      names: [hiAppEvent.event.APP_CRASH]
    }
  ],
});
// 通过订阅数据持有者holder,主动获取崩溃事件
if (holder != null) {
  let eventPkg: hiAppEvent.AppEventPackage|null = null;
  while ((eventPkg = holder.takeNext()) != null) {
    hilog.info(0x0000, 'hiAppEvent', `eventPkg.packageId=${eventPkg.packageId}`);
    hilog.info(0x0000, 'hiAppEvent', `eventPkg.row=${eventPkg.row}`);
    hilog.info(0x0000, 'hiAppEvent', `eventPkg.size=${eventPkg.size}`);
    for (const eventInfo of eventPkg.data) {
      hilog.info(0x0000, 'hiAppEvent', `eventPkg.data=${eventInfo}`);
    }
  }
}

方法三:观察者可以在实时回调函数onReceive中处理订阅事件。

import { hilog } from '@kit.PerformanceAnalysisKit';

hiAppEvent.addWatcher({
  name: "watcher3",
  // 订阅过滤条件,这里是订阅了系统事件领域的应用崩溃事件
  appEventFilters: [
    {
      domain: hiAppEvent.domain.OS,
      names: [hiAppEvent.event.APP_CRASH]
    }
  ],
  // 实现onReceive回调,监听到事件后实时回调
  onReceive: (domain: string, appEventGroups: Array<hiAppEvent.AppEventGroup>) => {
    hilog.info(0x0000, 'hiAppEvent', `domain=${domain}`);
    for (const eventGroup of appEventGroups) {
      hilog.info(0x0000, 'hiAppEvent', `eventName=${eventGroup.name}`);
      for (const eventInfo of eventGroup.appEventInfos) {
        hilog.info(0x0000, 'hiAppEvent', `event=${JSON.stringify(eventInfo)}`, );
      }
    }
  }
});

hiAppEvent.removeWatcher

removeWatcher(watcher: Watcher): void

移除事件观察者。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
watcher Watcher 事件观察者。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11102001 Invalid watcher name.

示例:

// 1. 定义一个事件观察者
let watcher: hiAppEvent.Watcher = {
  name: "watcher1",
}

// 2. 添加一个事件观察者来订阅事件
hiAppEvent.addWatcher(watcher);

// 3. 移除该事件观察者以取消订阅事件
hiAppEvent.removeWatcher(watcher);

hiAppEvent.setEventParam12+

setEventParam(params: Record&lt;string, ParamType&gt;, domain: string, name?: string): Promise&lt;void&gt;

事件自定义参数设置方法,使用Promise方式作为异步回调。在同一生命周期中,可以通过事件领域和事件名称关联系统事件和应用事件,系统事件仅支持崩溃和卡死事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
params Record&lt;string, ParamType&gt; 事件自定义参数对象。参数名和参数值规格定义如下:
- 参数名为string类型,首字符必须为字母字符或$字符。中间字符必须为数字字符、字母字符或下划线字符。结尾字符必须为数字字符或字母字符。长度非空且不超过32个字符。
- 参数值为ParamType类型,参数值长度需在1024个字符以内。
- 参数个数需在64个以内。
domain string 事件领域。事件领域可支持关联应用事件和系统事件(hiAppEvent.domain.OS)。
name string 事件名称。默认为空字符串,空字符串表示关联事件领域下的所有事件名称。事件名称可支持关联应用事件和系统事件,其中系统事件仅支持关联崩溃事件(hiAppEvent.event.APP_CRASH)和卡死事件(hiAppEvent.event.APP_FREEZE)。

返回值:

类型 说明
Promise&lt;void&gt; Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11101007 The number of parameter keys exceeds the limit.

示例:

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let params: Record<string, hiAppEvent.ParamType> = {
  "int_data": 100,
  "str_data": "strValue",
};

// 给应用事件追加自定义参数
hiAppEvent.setEventParam(params, "test_domain", "test_event").then(() => {
  hilog.info(0x0000, 'hiAppEvent', `success to set event param`);
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
});

hiAppEvent.setEventConfig15+

setEventConfig(name: string, config: Record&lt;string, ParamType&gt;): Promise&lt;void&gt;

事件相关的配置参数设置方法,使用Promise方式作为异步回调。在同一生命周期中,可以通过事件名称,设置事件相关的配置参数。
目前仅支持MAIN_THREAD_JANK(参数配置详见主线程超时事件检测)和APP_CRASH(参数配置详见崩溃日志配置参数设置介绍)事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
name string 事件名称。
config Record 事件自定义参数对象。参数名和参数值规格定义如下:
- 参数名为string类型,要求非空,且参数名长度需在1024个字符以内。
- 参数值为ParamType类型,参数值长度需在1024个字符以内。

返回值:

类型 说明
Promise&lt;void&gt; Promise对象。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed.

示例:

以下示例用于模拟配置MAIN_THREAD_JANK事件的门限触发条件,以log_type的三种类型为例:

log_type=0,用于采样栈或采样trace。

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let params: Record<string, hiAppEvent.ParamType> = {
  "log_type": "0"
};
hiAppEvent.setEventConfig(hiAppEvent.event.MAIN_THREAD_JANK, params).then(() => {
  hilog.info(0x0000, 'hiAppEvent', `success to set event config`);
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
});

log_type=1,仅用于采集调用栈。

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let params: Record<string, hiAppEvent.ParamType> = {
  "log_type": "1",
  "sample_interval": "100",
  "ignore_startup_time": "11",
  "sample_count": "21",
  "report_times_per_app": "3"
};
hiAppEvent.setEventConfig(hiAppEvent.event.MAIN_THREAD_JANK, params).then(() => {
  hilog.info(0x0000, 'hiAppEvent', `success to set event config`);
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
});

log_type=2,仅用于采集trace。

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let params: Record<string, hiAppEvent.ParamType> = {
  "log_type": "2"
};
hiAppEvent.setEventConfig(hiAppEvent.event.MAIN_THREAD_JANK, params).then(() => {
  hilog.info(0x0000, 'hiAppEvent', `success to set event config`);
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
});

Watcher

提供事件观察者的参数选项。用于配置和管理事件的观察者,实现对特定事件的监听和处理。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
name string 观察者名称,用于唯一标识观察者。首字符必须为字母字符,中间字符必须为数字字符、字母字符或下划线字符,结尾字符必须为数字字符或字母字符,长度非空且不超过32个字符。如testName1、crash_Watcher等。
triggerCondition TriggerCondition 订阅回调触发条件,需要与回调函数onTrigger一同传入才会生效。默认不触发。
appEventFilters AppEventFilter[] 订阅过滤条件,在需要对订阅事件进行过滤时传入。默认不过滤事件。
onTrigger (curRow: number, curSize: number, holder: AppEventPackageHolder) => void 订阅回调函数,需要与回调触发条件triggerCondition一同传入才会生效,函数入参说明如下:
curRow:在本次回调触发时的订阅事件总数量;
curSize:在本次回调触发时的订阅事件总大小,单位为byte;
holder:订阅数据持有者对象,可以通过其对订阅事件进行处理。
onReceive11+ (domain: string, appEventGroups: Array<AppEventGroup>) => void 订阅实时回调函数,与回调函数onTrigger同时存在时,只触发此回调,函数入参说明如下:
domain:回调事件的领域名称;
appEventGroups:回调事件集合。

TriggerCondition

提供设置Watcher的onTrigger回调触发条件的参数选项。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
row number 满足触发回调的事件总数量,正整数。默认值0,不触发回调。传入负值时,会被置为默认值。
size number 满足触发回调的事件总大小,正整数,单位为byte。默认值0,不触发回调。传入负值时,会被置为默认值。
timeOut number 满足触发回调的超时时长,正整数,单位为30s。默认值0,不触发回调。传入负值时,会被置为默认值。

AppEventFilter

提供设置Watcher的订阅过滤条件的参数选项。用于在事件观察者中设置事件过滤条件,确保只有满足过滤条件的事件才会被监听处理。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
domain string 需要订阅的事件领域。可以是系统事件领域(hiAppEvent.domain.OS)或开发者在使用Write接口时传入的自定义事件信息(AppEventInfo)中的事件领域。
eventTypes EventType[] 需要订阅的事件类型集合。默认不进行过滤。
names11+ string[] 需要订阅的事件名称集合。默认不进行过滤。

AppEventPackageHolder

订阅数据持有者类,用于对事件信息进行处理。

constructor

constructor(watcherName: string)

类构造函数,用于创建订阅数据持有者实例。先通过addWatcher添加事件观察者,再通过观察者名称关联到应用内已添加的观察者对象。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
watcherName string 已通过addWatcher添加的事件观察者名称。若未通过addWatcher添加,则默认无数据。

示例:

// 添加数据观察者“Watcher1”,订阅监听系统事件
hiAppEvent.addWatcher({
  name: "Watcher1",
  appEventFilters: [
    {
      domain: hiAppEvent.domain.OS,
    }
  ],
  });

// 创建订阅数据持有者实例,holder1持有的数据为上述addWatcher中添加的观察者“Watcher1”监听到的事件
let holder1: hiAppEvent.AppEventPackageHolder = new hiAppEvent.AppEventPackageHolder("Watcher1");

setSize

setSize(size: number): void

设置每次取出的事件包的数据大小阈值。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
size number 数据大小阈值,单位为byte。取值范围[0, $2^{31}$-1],超出范围会抛异常。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11104001 Invalid size value.

示例:

// 创建订阅数据持有者实例,holder2持有的数据为已通过addWatcher添加的观察者“Watcher1”监听到的事件
let holder2: hiAppEvent.AppEventPackageHolder = new hiAppEvent.AppEventPackageHolder("Watcher1");
// 设置每次取出事件包的数据大小阈值为1000byte
holder2.setSize(1000);

setRow12+

setRow(size: number): void

设置每次取出的事件包的数据条数,优先级高于setSize,和setSize同时调用时仅setRow生效。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
size number 事件条数,单位为条。取值范围(0, $2^{31}$-1],超出范围会抛异常。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11104001 Invalid size value.

示例:

// 创建订阅数据持有者实例,holder3持有的数据为已通过addWatcher添加的观察者“Watcher1”监听到的事件
let holder3: hiAppEvent.AppEventPackageHolder = new hiAppEvent.AppEventPackageHolder("Watcher1");
// 设置每次取出的事件包的数据条数为1000条
holder3.setRow(1000);

takeNext

takeNext(): AppEventPackage

获取订阅事件。

系统根据setSize设置的数据大小阈值或setRow设置的条数来取出订阅事件数据,默认取1条订阅事件。当订阅事件数据全部被取出时返回null。

当setRow和setSize同时调用时仅setRow生效。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

返回值:

类型 说明
AppEventPackage 取出的事件包对象,订阅事件数据被全部取出后会返回null。

示例:

// 创建订阅数据持有者实例,holder4持有的数据为已通过addWatcher添加的观察者“Watcher1”监听到的事件
let holder4: hiAppEvent.AppEventPackageHolder = new hiAppEvent.AppEventPackageHolder("Watcher1");
// 获取订阅事件
let eventPkg: hiAppEvent.AppEventPackage|null = holder4.takeNext();

AppEventInfo

提供事件信息的参数选项。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
domain string 事件领域。事件领域名称支持数字、字母、下划线字符,需要以字母开头且不能以下划线结尾,长度非空且不超过32个字符。
name string 事件名称。首字符必须为字母字符或$字符,中间字符必须为数字字符、字母字符或下划线字符,结尾字符必须为数字字符或字母字符,长度非空且不超过48个字符。
eventType EventType 事件类型。
params object 事件参数对象,包含每个事件参数的参数名和参数值。系统事件中params包含的字段已由各系统事件定义,具体字段含义在各类系统事件指南的介绍中,例如崩溃事件介绍 针对应用事件,Write打点写入的参数由开发者定义,其规格如下:
- 参数名为string类型,首字符必须为字母字符或$字符,中间字符必须为数字字符、字母字符或下划线字符,结尾字符必须为数字字符或字母字符,长度非空且不超过32个字符。如testName、\$123_name等。
- 参数值支持string、number、boolean、数组类型。string类型参数长度需在8*1024个字符以内,超出后会和对应的参数名一同被丢弃;number类型参数取值需在Number.MIN_SAFE_INTEGER~Number.MAX_SAFE_INTEGER范围内,超出可能会产生不确定值;数组类型参数中的元素类型只能全为string、number、boolean中的一种,且元素个数需在100以内,超出部分即从第101个元素开始会被丢弃。
- 参数个数需在32个以内,超出的参数会做丢弃处理。

AppEventPackage

提供订阅返回的事件包的参数定义。可用于获取事件包的详细信息,事件包由takeNext接口获得。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
packageId number 事件包ID,从0开始自动递增。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
row number 事件包的事件数量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
size number 事件包的事件大小,单位为byte。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
data string[] 事件包的事件信息。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
appEventInfos12+ Array<AppEventInfo> 事件对象集合。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

AppEventGroup11+

提供订阅返回的事件组的参数定义。可用于获取事件组的详细信息,事件组常在Watcher的onReceive回调中使用。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
name string 事件名称。
appEventInfos Array<AppEventInfo> 事件对象集合。

hiAppEvent.write

write(info: AppEventInfo, callback: AsyncCallback&lt;void&gt;): void

应用事件打点方法,将AppEventInfo类型的事件进行存储,使用callback方式作为异步回调。通过此接口写入的事件对象是开发者自定义的对象,为了避免与系统事件产生冲突混淆,不建议写入系统事件(Event中定义的系统事件名称常量)。此接口写入的事件可通过订阅事件观察者(addWatcher)进行订阅。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
info AppEventInfo 应用事件对象。其内部定义的事件名称建议避免与Event中定义的系统事件名称常量产生冲突。
callback AsyncCallback&lt;void&gt; 打点回调函数。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11100001 Function 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.

示例:

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let eventParams: Record<string, number|string> = {
  "int_data": 100,
  "str_data": "strValue",
};

// 应用事件打点,使用callback方式作为异步回调
hiAppEvent.write({
  domain: "test_domain",
  name: "test_event",
  eventType: hiAppEvent.EventType.FAULT,
  params: eventParams,
}, (err: BusinessError) => {
  if (err) {
    hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
    return;
  }
  hilog.info(0x0000, 'hiAppEvent', `success to write event`);
});

hiAppEvent.write

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

应用事件打点方法,将AppEventInfo类型的事件进行存储,使用Promise方式作为异步回调。通过此接口写入的事件对象是开发者自定义的对象,为了避免与系统事件产生冲突混淆,不建议写入系统事件(Event中定义的系统事件名称常量)。此接口写入的事件可通过订阅事件观察者(addWatcher)进行处理。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
info AppEventInfo 应用事件对象。其中的事件名称建议避免与Event中定义的系统事件名称常量冲突混淆。

返回值:

类型 说明
Promise&lt;void&gt; Promise对象。无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11100001 Function 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.

示例:

import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let eventParams: Record<string, number|string> = {
  "int_data": 100,
  "str_data": "strValue",
};

// 应用事件打点,使用Promise方式作为异步回调
hiAppEvent.write({
  domain: "test_domain",
  name: "test_event",
  eventType: hiAppEvent.EventType.FAULT,
  params: eventParams,
}).then(() => {
  hilog.info(0x0000, 'hiAppEvent', `success to write event`);
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'hiAppEvent', `code: ${err.code}, message: ${err.message}`);
});

hiAppEvent.addProcessor11+

addProcessor(processor: Processor): number

添加数据处理者,该数据处理者用于提供事件上云功能,数据处理者的实现可预置在设备中,开发者可根据数据处理者的约束设置属性。

Processor的配置信息需要由数据处理者提供,目前设备内暂未预置可供交互的数据处理者,因此当前事件上云功能不可用。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
processor Processor 上报事件的数据处理者。

返回值:

类型 说明
number 所添加上报事件数据处理者的ID,标识唯一数据处理者,可用于移除数据处理者。 添加失败返回-1,添加成功返回大于0的值。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

try {
    let processor: hiAppEvent.Processor = {
      name: 'analytics_demo'
    };
    let id: number = hiAppEvent.addProcessor(processor);
    hilog.info(0x0000, 'hiAppEvent', `addProcessor event was successful, id=${id}`);
} catch (error) {
    hilog.error(0x0000, 'hiAppEvent', `failed to addProcessor event, code=${error.code}`);
}

hiAppEvent.removeProcessor11+

removeProcessor(id: number): void

移除上报事件的数据处理者。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
id number 上报事件数据处理者ID。值大于0。由调用addProcessor接口返回值所得。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

try {
    let processor: hiAppEvent.Processor = {
      name: 'analytics_demo'
    };
    let id: number = hiAppEvent.addProcessor(processor);
    // 根据添加数据处理者返回的标识id移除特定数据处理者
    hiAppEvent.removeProcessor(id);
} catch (error) {
    hilog.error(0x0000, 'hiAppEvent', `failed to removeProcessor event, code=${error.code}`);
}

hiAppEvent.setUserId11+

setUserId(name: string, value: string): void

设置用户ID值。用于在配置Processor数据处理者时进行关联。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
name string 用户ID的key。只能包含大小写字母、数字、下划线和 $,不能以数字开头,长度非空且不超过256个字符。
value string 用户ID的值。长度不超过256,当值为null或空字符串时,则清除用户ID。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

try {
  hiAppEvent.setUserId('key', 'value');
} catch (error) {
  hilog.error(0x0000, 'hiAppEvent', `failed to setUserId event, code=${error.code}`);
}

hiAppEvent.getUserId11+

getUserId(name: string): string

获取通过setUserId接口设置的value值。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
name string 用户ID的key。只能包含大小写字母、数字、下划线和 $,不能以数字开头,长度非空且不超过256个字符。

返回值:

类型 说明
string 用户ID的值。没有查到返回空字符串。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

hiAppEvent.setUserId('key', 'value');
try {
  let value: string = hiAppEvent.getUserId('key');
  hilog.info(0x0000, 'hiAppEvent', `getUserId event was successful, userId=${value}`);
} catch (error) {
  hilog.error(0x0000, 'hiAppEvent', `failed to getUserId event, code=${error.code}`);
}

hiAppEvent.setUserProperty11+

setUserProperty(name: string, value: string): void

设置用户属性值。用于在配置Processor数据处理者时进行关联。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
name string 用户属性的key。只能包含大小写字母、数字、下划线和 $,不能以数字开头,长度非空且不超过256个字符。
value string 用户属性的值。长度不超过1024,当值为null或空字符串时,则清除用户属性。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

try {
  hiAppEvent.setUserProperty('key', 'value');
} catch (error) {
  hilog.error(0x0000, 'hiAppEvent', `failed to setUserProperty event, code=${error.code}`);
}

hiAppEvent.getUserProperty11+

getUserProperty(name: string): string

获取通过setUserProperty接口设置的value值。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
name string 用户属性的key。只能包含大小写字母、数字、下划线和 $,不能以数字开头,长度非空且不超过256个字符。

返回值:

类型 说明
string 用户属性的值。没有查到返回空字符串。

错误码:

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';

hiAppEvent.setUserProperty('key', 'value');
try {
  let value: string = hiAppEvent.getUserProperty('key');
  hilog.info(0x0000, 'hiAppEvent', `getUserProperty event was successful, userProperty=${value}`);
} catch (error) {
  hilog.error(0x0000, 'hiAppEvent', `failed to getUserProperty event, code=${error.code}`);
}

hiAppEvent.clearData

clearData(): void

应用事件打点数据清理方法,将当前应用存储在本地的打点数据进行清除。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

示例:

hiAppEvent.clearData();

hiAppEvent.configure

configure(config: ConfigOption): void

应用事件打点配置方法,支持配置打点开关和目录存储配额大小。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

参数:

参数名 类型 必填 说明
config ConfigOption 应用事件打点配置项对象。

错误码:

以下错误码的详细介绍请参见应用事件打点错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
11103001 Invalid max storage quota value.

示例:

// 配置打点开关为关闭状态
let config1: hiAppEvent.ConfigOption = {
  disable: true,
};
hiAppEvent.configure(config1);

// 配置文件目录存储配额为100M
let config2: hiAppEvent.ConfigOption = {
  maxStorage: '100M',
};
hiAppEvent.configure(config2);

ConfigOption

提供对应用事件打点功能的配置选项。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
disable boolean 打点功能开关,默认值为false。true:关闭打点功能,false:开启打点功能。
maxStorage string 打点数据存放目录的配额大小,默认值为“10M”。建议配额大小不超过10M,配额过大可能会影响接口效率。
在目录大小超出配额后,下次打点会触发对目录的清理操作:按从旧到新的顺序逐个删除打点数据文件,直到目录大小不超出配额时结束。
配额值字符串规格如下:
- 配额值字符串只由数字字符和大小单位字符(单位字符支持[b|k|kb|m|mb|g|gb|t|tb],不区分大小写)构成。
- 配额值字符串必须以数字开头,后面可以选择不传单位字符(默认使用byte作为单位),或者以单位字符结尾。

Processor11+

可以上报事件的数据处理者对象。用于事件的上报和管理,开发者可自定义数据处理配置,满足不同的数据处理需求。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
name string 数据处理者的名称。名称只能包含大小写字母、数字、下划线和 $,不能以数字开头,长度非空且不超过256个字符。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
debugMode boolean 是否开启debug模式,默认值为false。配置值为true表示开启debug模式,false表示不开启debug模式。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
routeInfo string 服务器位置信息,默认为空字符串。传入字符串长度不能超过8KB,超过时会被置为默认值。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
appId string 应用id,默认为空字符串。传入字符串长度不能超过8KB,超过时会被置为默认值。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
onStartReport boolean 数据处理者在启动时是否上报事件,默认值为false。配置值为true表示上报事件,false表示不上报事件。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
onBackgroundReport boolean 当应用程序进入后台时是否上报事件,默认值为false。配置值为true表示上报事件,false表示不上报事件。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
periodReport number 事件定时上报时间周期,单位为秒。传入数值必须大于或等于0,小于0时会被置为默认值0,不进行定时上报。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
batchReport number 事件上报阈值,当事件条数达到阈值时上报事件。传入数值必须大于0且小于1000,不在数值范围内会被置为默认值0,不进行上报。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
userIds string[] 数据处理者可以上报的用户ID的name数组。name对应setUserId接口的name参数。默认为空数组。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
userProperties string[] 数据处理者可以上报的用户属性的name数组。name对应setUserProperty接口的name参数。默认为空数组。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
eventConfigs AppEventReportConfig[] 数据处理者可以上报的事件描述配置数组。默认为空数组。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
configId12+ number 数据处理者配置id。传入数值必须大于或等于0,小于0时会被置为默认值0。传入的值大于0时,与数据处理者的名称name共同唯一标识数据处理者。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
customConfigs12+ Record<string, string> 自定义扩展参数。传入参数名和参数值不符合规格会默认不配置扩展参数,其规格定义如下:
- 参数名为string类型,首字符必须为字母字符或$字符,中间字符必须为数字字符、字母字符或下划线字符,结尾字符必须为数字字符或字母字符,长度非空且不超过32个字符。
- 参数值为string类型,参数值长度需在1024个字符以内。
- 参数个数需在32个以内。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

AppEventReportConfig11+

数据处理者可以上报事件的描述配置。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 可选 说明
domain string 事件领域。默认为空字符串,事件领域名称支持数字、字母、下划线字符,需要以字母开头且不能以下划线结尾,长度非空且不超过32个字符。
name string 事件名称。默认为空字符串,首字符必须为字母字符或$字符,中间字符必须为数字字符、字母字符或下划线字符,结尾字符必须为数字字符或字母字符,长度非空且不超过48个字符。
isRealTime boolean 是否实时上报事件。默认值为false,配置值为true表示实时上报事件,false表示不实时上报事件。

ParamType12+

type ParamType = number|string|boolean|Array&lt;string&gt;

事件自定义参数值的类型。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

类型 说明
number 表示值类型为数字。
string 表示值类型为字符串。
boolean 表示值类型为布尔值。
Array&lt;string&gt; 表示值类型为字符串类型的数组。

EventType

事件类型枚举。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 说明
FAULT 1 故障类型事件。
STATISTIC 2 统计类型事件。
SECURITY 3 安全类型事件。
BEHAVIOR 4 行为类型事件。

hiappevent.domain11+

提供领域名称常量。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 说明
OS string 系统领域。

hiappevent.event

提供事件名称常量。包含系统事件名称常量和应用事件名称常量,其中应用事件名称常量是为开发者在调用Write接口进行应用事件打点时预留的可选自定义事件名称。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 说明
USER_LOGIN string 用户登录事件。预留的应用事件名称常量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
USER_LOGOUT string 用户登出事件。预留的应用事件名称常量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
DISTRIBUTED_SERVICE_START string 分布式服务启动事件。预留的应用事件名称常量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
APP_CRASH11+ string 应用崩溃事件。系统事件名称常量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
APP_FREEZE11+ string 应用卡死事件。系统事件名称常量。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
APP_LAUNCH12+ string 应用启动耗时事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
SCROLL_JANK12+ string 应用滑动丢帧事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
CPU_USAGE_HIGH12+ string 应用CPU高负载事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
BATTERY_USAGE12+ string 应用24h功耗器件分解统计事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
RESOURCE_OVERLIMIT12+ string 应用资源泄露事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
ADDRESS_SANITIZER12+ string 应用踩内存事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
MAIN_THREAD_JANK12+ string 应用主线程超时事件。系统事件名称常量。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

hiappevent.param

提供参数名称常量。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.HiviewDFX.HiAppEvent

名称 类型 只读 说明
USER_ID string 用户自定义ID。
DISTRIBUTED_SERVICE_NAME string 分布式服务名称。
DISTRIBUTED_SERVICE_INSTANCE_ID string 分布式服务实例ID。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Performance Analysis Kit(性能分析服务)

harmony 鸿蒙HiAppEvent

harmony 鸿蒙HiAppEvent_AppEventGroup

harmony 鸿蒙HiAppEvent_AppEventInfo

harmony 鸿蒙HiCollie

harmony 鸿蒙HiCollie_DetectionParam

harmony 鸿蒙HiCollie_SetTimerParam

harmony 鸿蒙HiDebug

harmony 鸿蒙HiDebug_JsStackFrame

harmony 鸿蒙HiDebug_MemoryLimit

0  赞