Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
0641092b
D
Docs
项目概览
OpenHarmony
/
Docs
8 个月 前同步成功
通知
158
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0641092b
编写于
11月 12, 2022
作者:
L
lyj_love_code
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add write and query interface for c
Signed-off-by:
N
lyj_love_code
<
liangyujian2@huawei.com
>
上级
cbd40f53
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
503 addition
and
90 deletion
+503
-90
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-logging.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-logging.md
+177
-39
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md
+326
-51
未找到文件。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-logging.md
浏览文件 @
0641092b
...
...
@@ -4,82 +4,191 @@
### 功能简介
HiSysEvent打点提供了事件
埋点功能,开发者可以通过在关键路径埋
点来记录系统在运行过程中的重要信息。同时,HiSysEvent打点也提供了以事件领域为单位的HiSysEvent打点屏蔽机制,方便开发者评估及调试HiSysEvent打点操作的影响。
HiSysEvent打点提供了事件
打点功能,开发者可以通过在关键路径打
点来记录系统在运行过程中的重要信息。同时,HiSysEvent打点也提供了以事件领域为单位的HiSysEvent打点屏蔽机制,方便开发者评估及调试HiSysEvent打点操作的影响。
### 运作机制
在进行HiSysEvent事件
埋
点之前,需要先完成HiSysEvent打点配置,具体配置方法请参考
[
HiSysEvent打点配置指导
](
subsys-dfx-hisysevent-logging-config.md
)
。
在进行HiSysEvent事件
打
点之前,需要先完成HiSysEvent打点配置,具体配置方法请参考
[
HiSysEvent打点配置指导
](
subsys-dfx-hisysevent-logging-config.md
)
。
## 开发指导
### 场景介绍
事件
埋
点的主要工作是将打点数据进行落盘。
事件
打
点的主要工作是将打点数据进行落盘。
### 接口说明
#### C++接口说明
C++事件
埋点开发能力如下:HiSysEvent类,具体的API详见接口文档
。
C++事件
打点开发能力如下:HiSysEvent类,具体API详见接口目录(/base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include/)
。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
>
在OpenHarmony-3.2-Beta3版本中,为避免打点风暴事件引发性能问题,对HiSysEvent打点进行了管控。表1中的HiSysEvent::Write打点API接口被表2中的HiSysEventWrite宏接口取代。HiSysEvent::Write接口已废弃,请使用HiSysEventWrite宏
完成HiSysEvent事件打点。
>
从OpenHarmony-3.2-Beta3版本开始,为避免打点风暴事件引发性能问题,对HiSysEvent打点进行了管控。表1中的HiSysEvent::Write打点接口被表2中的HiSysEventWrite宏接口取代。HiSysEvent::Write接口已废弃,请使用HiSysEventWrite宏接口
完成HiSysEvent事件打点。
**表1**
C++事件埋点API接口功能介绍
(已废弃)
**表1**
事件打点接口
(已废弃)
| 接口名 | 描述 |
| ------------------------------------------------------------ | --------------------- |
| template
<
typename...
Types
>
<br>
static
int
Write(const
std::string
&
domain,
const
std::string
&
eventName,
EventType
type,
Types...
keyValues) | 将打点事件数据进行落盘 |
| template
<
typename...
Types
>
<br>
static
int
Write(const
std::string
&
domain,
const
std::string
&
eventName,
EventType
type,
Types...
keyValues) | 将打点事件数据进行落盘。 |
**表2**
事件打点宏接口
**表2**
C++事件埋点API接口功能介绍
| 接口名 | 描述 |
| ------------------------------------------------------------ | --------------------- |
| HiSysEventWrite(domain, eventName, type, ...) | 将打点事件数据进行落盘
|
| HiSysEventWrite(domain, eventName, type, ...) | 将打点事件数据进行落盘
。
|
**表3**
C++事件类型介绍
**表3**
EventType事件类型枚举
| 事件类型 | 描述 |
| --------- | ----------- |
| FAULT | 故障类型事件 |
| STATISTIC | 统计类型事件 |
| SECURITY | 安全类型事件 |
| BEHAVIOR | 行为类型事件 |
| FAULT | 故障类型事件。 |
| STATISTIC | 统计类型事件。 |
| SECURITY | 安全类型事件。 |
| BEHAVIOR | 行为类型事件。 |
#### C接口说明
C事件打点开发能力如下:具体API详见接口目录(/base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include/)。
**表4**
事件打点接口
| 接口名 | 描述 |
| ------------------------------------------------------------ | ------------------------ |
| int OH_HiSysEvent_Write(const char
\*
domain, const char
\*
name, HiSysEventEventType type, HiSysEventParam params[], size_t size); | 将打点事件数据进行落盘。 |
**表5**
HiSysEventEventType事件类型枚举
| 事件类型 | 描述 |
| -------------------- | -------------- |
| HISYSEVENT_FAULT | 故障类型事件。 |
| HISYSEVENT_STATISTIC | 统计类型事件。 |
| HISYSEVENT_SECURITY | 安全类型事件。 |
| HISYSEVENT_BEHAVIOR | 行为类型事件。 |
**表6**
HiSysEventParam事件参数结构体
| 属性名称 | 属性类型 | 描述 |
| --------- | -------------------- | ---------------------------------- |
| name | char name[] | 事件参数名称。 |
| t | HiSysEventParamType | 事件参数类型。 |
| v | HiSysEventParamValue | 事件参数值。 |
| arraySize | size_t | 事件参数值为数组类型时的数组长度。 |
**表7**
HiSysEventParamType事件参数类型枚举
| 参数类型 | 描述 |
| ----------------------- | -------------------------- |
| HISYSEVENT_INVALID | 无效类型事件参数。 |
| HISYSEVENT_BOOL | bool类型事件参数。 |
| HISYSEVENT_INT8 | int8_t类型事件参数。 |
| HISYSEVENT_UINT8 | uint8_t类型事件参数。 |
| HISYSEVENT_INT16 | int16_t类型事件参数。 |
| HISYSEVENT_UINT16 | uint16_t类型事件参数。 |
| HISYSEVENT_INT32 | int32_t类型事件参数。 |
| HISYSEVENT_UINT32 | uint32_t类型事件参数。 |
| HISYSEVENT_INT64 | int64_t类型事件参数。 |
| HISYSEVENT_UINT64 | uint64_t类型事件参数。 |
| HISYSEVENT_FLOAT | float类型事件参数。 |
| HISYSEVENT_DOUBLE | double类型事件参数。 |
| HISYSEVENT_STRING | char
*
类型事件参数。 |
| HISYSEVENT_BOOL_ARRAY | bool数组类型事件参数。 |
| HISYSEVENT_INT8_ARRAY | int8_t数组类型事件参数。 |
| HISYSEVENT_UINT8_ARRAY | uint8_t数组类型事件参数。 |
| HISYSEVENT_INT16_ARRAY | int16_t数组类型事件参数。 |
| HISYSEVENT_UINT16_ARRAY | uint16_t数组类型事件参数。 |
| HISYSEVENT_INT32_ARRAY | int32_t数组类型事件参数。 |
| HISYSEVENT_UINT32_ARRAY | uint32_t数组类型事件参数。 |
| HISYSEVENT_INT64_ARRAY | int64_t数组类型事件参数。 |
| HISYSEVENT_UINT64_ARRAY | uint64_t数组类型事件参数。 |
| HISYSEVENT_FLOAT_ARRAY | float数组类型事件参数。 |
| HISYSEVENT_DOUBLE_ARRAY | double数组类型事件参数。 |
| HISYSEVENT_STRING_ARRAY | char
*
数组类型事件参数。 |
**表8**
HiSysEventParamValue事件参数值联合体
| 属性名称 | 属性类型 | 描述 |
| -------- | -------- | ------------------------ |
| b | bool | bool类型事件参数值。 |
| i8 | int8_t | int8_t类型事件参数值。 |
| ui8 | uint8_t | uint8_t类型事件参数值。 |
| i16 | int16_t | int16_t类型事件参数值。 |
| ui16 | uint16_t | uint16_t类型事件参数值。 |
| i32 | int32_t | int32_t类型事件参数值。 |
| ui32 | uint32_t | uint32_t类型事件参数值。 |
| i64 | int64_t | int64_t类型事件参数值。 |
| ui64 | uint64_t | uint64_t类型事件参数值。 |
| f | float | float类型事件参数值。 |
| d | double | double类型事件参数值。 |
| s | char
* | char*
类型事件参数值。 |
| array | void
*
| 数组类型事件参数值。 |
#### kernel接口说明
kernel事件
埋点开发能力如下:
kernel事件
打点开发能力如下:具体API详见接口文件(/kernel/linux/linux-5.10/include/dfx/hiview_hisysevent.h)。
**表
4**
kernel事件埋点API接口功能介绍
**表
9**
事件打点接口
| 接口名 | 描述 |
| ------------------------------------------------------------ | ----------------------------------- |
| struct hiview_hisysevent
*hisysevent_create(const char *
domain, const char
*
name, enum hisysevent_type type); | 创建一个事件对象
|
| void hisysevent_destroy(struct hiview_hisysevent
*
event); | 销毁一个事件对象
|
| int hisysevent_put_integer(struct hiview_hisysevent
*event, const char *
key, long long value); | 将整数类型的事件参数添加到事件对象
|
| int hisysevent_put_string(struct hiview_hisysevent
*event, const char *
key, const char
*
value); | 将字符串类型的事件参数添加到事件对象 |
| int hisysevent_write(struct hiview_hisysevent
*
event); | 将事件对象数据进行落盘
|
| struct hiview_hisysevent
*hisysevent_create(const char *
domain, const char
*
name, enum hisysevent_type type); | 创建一个事件对象
。
|
| void hisysevent_destroy(struct hiview_hisysevent
*
event); | 销毁一个事件对象
。
|
| int hisysevent_put_integer(struct hiview_hisysevent
*event, const char *
key, long long value); | 将整数类型的事件参数添加到事件对象
。
|
| int hisysevent_put_string(struct hiview_hisysevent
*event, const char *
key, const char
*
value); | 将字符串类型的事件参数添加到事件对象
。
|
| int hisysevent_write(struct hiview_hisysevent
*
event); | 将事件对象数据进行落盘
。
|
**表
5**
kernel事件类型介绍
**表
10**
hisysevent_type事件类型枚举
| 事件类型 | 描述 |
| --------- | ----------- |
| FAULT | 故障类型事件 |
| STATISTIC | 统计类型事件 |
| SECURITY | 安全类型事件 |
| BEHAVIOR | 行为类型事件 |
| FAULT | 故障类型事件
。
|
| STATISTIC | 统计类型事件
。
|
| SECURITY | 安全类型事件
。
|
| BEHAVIOR | 行为类型事件
。
|
### 开发步骤
#### C++
埋
点开发步骤
#### C++
打
点开发步骤
1.
在需要埋点的地方直接调用埋
点接口,并传入相应事件参数。
在需要打点的地方直接调用打
点接口,并传入相应事件参数。
```
c++
HiSysEventWrite
(
HiSysEvent
::
Domain
::
AAFWK
,
"START_APP"
,
HiSysEvent
::
EventType
::
BEHAVIOR
,
"APP_NAME"
,
"com.ohos.demo"
);
```
#### kernel埋点开发步骤
#### C打点开发步骤
1.
如果需要在打点时传入自定义事件参数,先要根据事件参数类型创建对应的事件参数对象,再将其放入到事件参数数组中。
```
c
// 创建一个int32_t类型的事件参数
HiSysEventParam
param1
=
{
.
name
=
"KEY_INT32"
,
.
t
=
HISYSEVENT_INT32
,
.
v
=
{
.
i32
=
1
},
.
arraySize
=
0
,
};
// 创建一个int32_t数组类型的事件参数
int32_t
int32Arr
[]
=
{
1
,
2
,
3
};
HiSysEventParam
param2
=
{
.
name
=
"KEY_INT32_ARR"
,
.
t
=
HISYSEVENT_INT32_ARRAY
,
.
v
=
{
.
array
=
int32Arr
},
.
arraySize
=
sizeof
(
int32Arr
)
/
sizeof
(
int32Arr
[
0
]),
};
// 将事件参数对象放入创建的事件参数数组中
HiSysEventParam
params
[]
=
{
param1
,
param2
};
```
2.
在需要打点的地方调用打点接口,并传入相应事件参数。
```
c
OH_HiSysEvent_Write
(
"TEST_DOMAIN"
,
"TEST_NAME"
,
HISYSEVENT_BEHAVIOR
,
params
,
sizeof
(
params
)
/
sizeof
(
params
[
0
]));
```
#### kernel打点开发步骤
1.
根据事件领域、事件名称、事件类型参数,创建一个基础的事件对象。
...
...
@@ -141,9 +250,9 @@ kernel事件埋点开发能力如下:
### 开发实例
#### C++
埋
点开发实例
#### C++
打
点开发实例
假设业务模块需要在应用启动时进行
埋
点来记录应用启动事件,且需要记录应用的包名信息,完整使用示例如下所示:
假设业务模块需要在应用启动时进行
打
点来记录应用启动事件,且需要记录应用的包名信息,完整使用示例如下所示:
1.
首先,需要在业务模块的在BUILD.gn里增加HiSysEvent部件依赖。
...
...
@@ -151,7 +260,7 @@ kernel事件埋点开发能力如下:
external_deps
=
[
"hisysevent_native:libhisysevent"
]
```
2.
在业务模块的应用启动函数StartAbility()中,调用
埋
点接口并传入对应事件参数。
2.
在业务模块的应用启动函数StartAbility()中,调用
打
点接口并传入对应事件参数。
```
c++
#include "hisysevent.h"
...
...
@@ -164,9 +273,40 @@ kernel事件埋点开发能力如下:
}
```
#### kernel埋点开发实例
#### C打点开发实例
假设业务模块需要在应用启动时进行打点来记录应用启动事件,且需要记录应用的包名信息,完整使用示例如下所示:
1.
首先,需要在业务模块的在BUILD.gn里增加HiSysEvent部件依赖。
```
c++
external_deps
=
[
"hisysevent_native:libhisysevent"
]
```
2.
在业务模块的应用启动函数StartAbility()中,调用打点接口并传入对应事件参数。
```
c
#include "hisysevent_c.h"
int
StartAbility
()
{
...
// 其他业务逻辑
char
packageName
[]
=
"com.ohos.demo"
;
HiSysEventParam
param
=
{
.
name
=
"APP_NAME"
,
.
t
=
HISYSEVENT_STRING
,
.
v
=
{
.
s
=
packageName
},
.
arraySize
=
0
,
};
HiSysEventParam
params
[]
=
{
param
};
int
ret
=
OH_HiSysEvent_Write
(
"AAFWK"
,
"START_APP"
,
HISYSEVENT_BEHAVIOR
,
params
,
sizeof
(
params
)
/
sizeof
(
params
[
0
]));
...
// 其他业务逻辑
}
```
#### kernel打点开发实例
假设内核业务模块需要在设备启动时进行
埋
点来记录设备启动事件,完整使用示例如下所示:
假设内核业务模块需要在设备启动时进行
打
点来记录设备启动事件,完整使用示例如下所示:
1.
在设备启动函数device_boot()中,构建一个启动事件对象,然后将事件进行上报,最后销毁事件对象。
...
...
@@ -204,7 +344,6 @@ kernel事件埋点开发能力如下:
-
假设业务模块中,需要在某个cpp文件中屏蔽名称分别为AAFWK和POWER的事件领域的打点,在该cpp文件引入hisysevent.h头文件之前,定义名称为DOMAIN_MASKS的宏:
```
c++
#define DOMAIN_MASKS "AAFWK|POWER"
#include "hisysevent.h"
...
...
@@ -212,14 +351,13 @@ kernel事件埋点开发能力如下:
HiSysEventWrite
(
OHOS
:
HiviewDFX
::
HiSysEvent
::
Domain
::
AAFWK
,
"JS_ERROR"
,
OHOS
:
HiviewDFX
::
HiSysEvent
::
EventType
::
FAULT
,
"MODULE"
,
"com.ohos.module"
);
// 该HiSysEvent打点操作不会执行
...
// 其他业务逻辑
HiSysEventWrite
(
OHOS
:
HiviewDFX
::
HiSysEvent
::
Domain
::
POWER
,
"POWER_RUNNINGLOCK"
,
OHOS
:
HiviewDFX
::
HiSysEvent
::
EventType
::
FAULT
,
"NAME"
,
"com.ohos.module"
);
// 该HiSysEvent打点操作不会执行
```
-
假设需要在整个业务模块中屏蔽名称分别为AAFWK和POWER的事件领域的打点,在模块的BUILG.gn文件中定义名称为DOMAIN_MASKS的宏:
```
gn
config("module_a") {
... // 其他配置项
cflags_cc += ["-DDOMAIN_MASKS=\"AAFWK|POWER\""]
... // 其他配置项
cflags_cc += ["-DDOMAIN_MASKS=\"AAFWK|POWER\""]
}
```
...
...
@@ -231,4 +369,4 @@ kernel事件埋点开发能力如下:
# 参考
HiSysEvent模块会将
埋点数据写入到节点文件中,而埋
点数据的解析处理会在Hiview模块中统一进行,详细处理过程可参考
[
Hiview开发指导
](
subsys-dfx-hiview.md
)
。
HiSysEvent模块会将
打点数据写入到节点文件中,而打
点数据的解析处理会在Hiview模块中统一进行,详细处理过程可参考
[
Hiview开发指导
](
subsys-dfx-hiview.md
)
。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md
浏览文件 @
0641092b
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录