Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
2de1f829
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
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,发现更多精彩内容 >>
提交
2de1f829
编写于
2月 09, 2022
作者:
X
xuyong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
hisysevent tag订阅文档更新
Signed-off-by:
N
xuyong
<
xuyong59@huawei.com
>
上级
c4735d3d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
146 addition
and
115 deletion
+146
-115
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
+55
-60
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
+22
-8
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write-config.md
...vice-dev/subsystems/subsys-dfx-hisysevent-write-config.md
+66
-47
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
+3
-0
未找到文件。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
浏览文件 @
2de1f829
...
...
@@ -2,9 +2,9 @@
-
[
概述
](
#section315316685112
)
-
[
接口说明
](
#section0342191810519
)
-
[
开发指导
](
#section123181432175110
)
-
[
C++开发
](
#section2016116181902
)
-
[
订阅HiSysEvent事件
](
#section123181432175110
)
-
[
编译配置
](
#section123181432175187
)
-
[
源代码开发
](
#section123181432175165
)
## 概述<a name="section315316685112"></a>
...
...
@@ -112,76 +112,71 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
</tbody>
</table>
## 开发指导<a name="section123181432175110"></a>
### C++开发<a name="section2016116181902"></a>
1.
编译配置:
- 编译配置文件中添加对hisysevent\_native部件libhisyseventmanager库的依赖。
```
external_deps = [ "hisysevent_native:libhisyseventmanager", ]
```
## 订阅HiSysEvent事件<a name="section123181432175110"></a>
### 编译配置<a name="section123181432175187"></a>
2.
源代码开发
:
编译配置文件中增加对hisysevent
\_
native组件libhisyseventmanager库的依赖
:
- 自定义订阅回调实现类DemoListener:
```
external_deps = [ "hisysevent_native:libhisyseventmanager", ]
```
```
#ifndef DEMO_LISTENER_H
#define DEMO_LISTENER_H
### 源代码开发<a name="section123181432175165"></a>
#include "hisysevent_subscribe_callback_native.h"
-
自定义订阅回调实现类DemoListener:
#include <string>
```
#ifndef DEMO_LISTENER_H
#define DEMO_LISTENER_H
class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBackNative {
public:
explicit DemoListener() : HiSysEventSubscribeCallBackNative() {}
void OnHandle(const std::string& domain, const std::string& eventName, const int eventType,
const std::string& eventDetail);
virtual ~DemoListener() {}
void OnServiceDied();
};
```
#include "hisysevent_subscribe_callback_native.h"
- 实现订阅回调接口:
#include <string>
```
#include "demo_listener.h"
class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBackNative {
public:
explicit DemoListener() : HiSysEventSubscribeCallBackNative() {}
void OnHandle(const std::string& domain, const std::string& eventName, const int eventType,
const std::string& eventDetail);
virtual ~DemoListener() {}
void OnServiceDied();
};
```
#include <iostream>
-
实现订阅回调接口:
void DemoListener::OnHandle(const std::string& domain, const std::string& eventName,
const int eventType, const std::string& eventDetail)
{
std::cout << eventDetail << std::endl;
}
```
#include "demo_listener.h"
void DemoListener::OnServiceDied()
{
std::cout << std::string("service disconnect, exit") << std::endl;
exit(0);
}
```
#include <iostream>
- 通过HiSysEventManager类提供的AddEventListener接口注册回调对象:
void DemoListener::OnHandle(const std::string& domain, const std::string& eventName,
const int eventType, const std::string& eventDetail)
{
std::cout << eventDetail << std::endl;
}
```
auto demoListener = std::make_shared<DemoListener>();
// 事件标签规则订阅,规则类型为默认的全词匹配类型
ListenerRule tagRule("dfx");
// 事件标签规则订阅,规则类型为正则匹配类型
ListenerRule regRule("dfx.*", RuleType::REGULAR);
// 事件领域及事件名称规则订阅,规则类型为前缀匹配类型
ListenerRule domainNameRule("HIVIEWDFX", "APP_USAGE", RuleType::PREFIX);
std::vector<ListenerRule> sysRules;
sysRules.push_back(tagRule);
sysRules.push_back(regRule);
sysRules.push_back(domainNameRule);
HiSysEventManager::AddEventListener(demoListener, sysRules);
```
void DemoListener::OnServiceDied()
{
std::cout << std::string("service disconnect, exit") << std::endl;
exit(0);
}
```
-
通过HiSysEventManager类提供的AddEventListener接口注册回调对象:
```
auto demoListener = std::make_shared<DemoListener>();
// 事件标签规则订阅,规则类型为默认的全词匹配类型
ListenerRule tagRule("dfx");
// 事件标签规则订阅,规则类型为正则匹配类型
ListenerRule regRule("dfx.*", RuleType::REGULAR);
// 事件领域及事件名称规则订阅,规则类型为前缀匹配类型
ListenerRule domainNameRule("HIVIEWDFX", "APP_USAGE", RuleType::PREFIX);
std::vector<ListenerRule> sysRules;
sysRules.push_back(tagRule);
sysRules.push_back(regRule);
sysRules.push_back(domainNameRule);
HiSysEventManager::AddEventListener(demoListener, sysRules);
```
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
浏览文件 @
2de1f829
...
...
@@ -12,7 +12,9 @@
实时订阅HiSysEvent事件的基础命令:
**hisysevent -r**
```
hisysevent -r
```
选项说明:
...
...
@@ -22,7 +24,9 @@
打开调试模式:
**hisysevent -r -d**
```
hisysevent -r -d
```
选项说明:
...
...
@@ -32,7 +36,9 @@
通过事件标签方式实时订阅HiSysEvent事件:
**hisysevnet -r -t \<tag\> \[-c \[WHOLE_WORD|PREFIX|REGULAR\]\]**
```
hisysevnet -r -t <tag> [-c [WHOLE_WORD|PREFIX|REGULAR]]
```
选项说明:
...
...
@@ -43,7 +49,9 @@
4.
通过事件领域及事件名称的方式实时订阅HiSysEvent事件:
**hisysevent -r -o \<domain\> -n \<eventName\> \[-c \[WHOLE_WORD|PREFIX|REGULAR\]\]**
```
hisysevent -r -o <domain> -n <eventName> [-c [WHOLE_WORD|PREFIX|REGULAR]]
```
| 选项名称 | 功能说明 |
| -------- | --------- |
...
...
@@ -58,7 +66,9 @@
查询历史HiSysEvent事件的基础命令:
**hisysevent -l**
```
hisysevent -l
```
选项说明:
...
...
@@ -68,7 +78,9 @@
通过设置开始/结束时间,过滤查询历史HiSysEvent事件的结果的命令:
**hisysevent -l -s \<begin time\> -e \<end time\>**
```
hisysevent -l -s <begin time> -e <end time>
```
选项说明:
...
...
@@ -79,10 +91,12 @@
通过设置最大数量值,限制查询历史HiSysEvent事件的数量:
**hisysevent -l -m \<max hisysevent count\>**
```
hisysevent -l -m <max hisysevent count>
```
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -m | 设置查询历史HiSysEvent事件的数量,有效值范围[0,1000],此次查询返回的HiSysEvent事件数目不会多于此值。 |
\ No newline at end of file
| -m | 设置查询历史HiSysEvent事件的数量,有效值范围[0,1000],此次查询返回的HiSysEvent事件数目不会多于此值。 |
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write-config.md
浏览文件 @
2de1f829
# HiSysEvent打点配置指导<a name="ZH-CN_TOPIC_0000001080478132"></a>
-
[
概述
](
#section315316685115
)
-
[
yaml文件的编写
](
#section123181432175113
)
-
[
基本概念
](
#section123181432175143
)
-
[
约束与限制
](
#section123181432175114
)
-
[
编写yaml文件
](
#section123181432175113
)
-
[
yaml文件编写规则
](
#section123181432175133
)
-
[
yaml文件样例
](
#section123181432175123
)
-
[
yaml文件的验证流程
](
#section123181432175115
)
-
[
yaml文件的路径配置
](
#section123181432175135
)
-
[
yaml文件的编译
](
#section123181432175137
)
-
[
打点
验证
](
#section123181432175139
)
-
[
yaml文件
编写
样例
](
#section123181432175123
)
-
[
验证yaml文件
](
#section123181432175115
)
-
[
配置yaml文件路径
](
#section123181432175135
)
-
[
编译yaml文件
](
#section123181432175137
)
-
[
打点
及查询定义的事件
](
#section123181432175139
)
## 概述<a name="section315316685115"></a>
部件若有HiSysEvent事件的打点需求,则需要先定义yaml文件并在bundle.js文件中配置这些文件的路径。OpenHarmony编译框架在编译过程中则会通过python编译脚本解析校验bundle.js文件指定的所有yaml文件。在解析校验之后,编译框架会将这些yaml文件中配置的信息汇总转换成名为hisysevent.def的json文件。最后,将此json文件打包到系统指定路径下
。
组件若有HiSysEvent事件的打点需求,则需要先定义yaml文件并在bundle.js文件中
[
配置yaml文件的路径
](
#section123181432175135
)
。OpenHarmony编译框架在编译过程中则会通过python编译脚本解析校验bundle.js文件指定的所有yaml文件。在解析校验之后,编译框架会将这些yaml文件中配置的信息汇总转换成名为hisysevent.def的json文件。最后,将此json文件打包到系统指定路径下,用作HiSysEvent事件落盘的判断依据
。
##
yaml文件的编写<a name="section12318143217511
3"></a>
##
# 基本概念<a name="section12318143217514
3"></a>
### yaml文件编写规则<a name="section123181432175133"></a>
在配置HiSysEvent打点之前,开发者应了解一下基本概念:
1.
每个部件可定义一个或多个yaml文件,每个yaml文件只能有一个事件领域domain,且不能与其他事件领域重名,事件领域的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围为1~16。
-
事件领域:用于标识事件所属的领域,在yaml文件中以domain为键值指定,可参考yaml文件样例中的
[
domain
](
#section123181432175123
)
。
2.
每个事件领域可定义零个或多个事件名称event,同一个事件领域内部的事件名称不能重名,事件名称的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个事件领域内部事件名称的不能超过4096个。
-
事件名称:用于指定事件领域包含的所有事件,可参考yaml文件样例中的
[
EVENT_NAMEA/EVENT_NAMEB
](
#section123181432175123
)
。
3.
每个事件名称可定义多个参数param,同一个事件名称内部的参数不能重名,参数的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个事件名称内包含的参数的个数不能超过128个。
-
参数:用于定义某个事件名称包含的所有键值,可参考yaml文件样例中的
[
__BASE/NAME1/NAME2
](
#section123181432175123
)
。
>![](../public_sys-resources/icon-note.gif) **说明:**
>每个事件名称**有且只有**一个名称为```__BASE```的参数,此参数字段组成如表1,其他自定义名称的参数,具体字段组成如表2:
**表 1**
### 约束与限制<a name="section123181432175114"></a>
**定义事件领域、事件名称及参数的约束限制:**
-
事件领域:每个yaml文件只能有一个事件领域,且不能与其他事件领域重名。
-
事件名称:每个事件领域可定义零个或多个事件名称,同一个事件领域内部的事件名称不能重名。
-
参数:每个事件名称可定义多个参数,同一个事件名称内部的参数不能重名,每个事件名称
**有且只有**
一个名称为__BASE的参数,此参数字段组成如表1,他自定义参数,具体字段组成如表2。
**表 1**
__BASE参数字段说明
<a
name=
"table1844019587513"
></a>
<table><thead
align=
"left"
><tr
id=
"row1440058186118"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p19441135865020"
><a
name=
"p19441135845020"
></a><a
name=
"p19441135865020"
></a>
字段名称
</p>
...
...
@@ -103,7 +105,7 @@
</tbody>
</table>
**表 2**
**表 2**
自定义参数字段说明
<a
name=
"table1844019587523"
></a>
<table><thead
align=
"left"
><tr
id=
"row1440060185118"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p19442235845020"
><a
name=
"p19442235845020"
></a><a
name=
"p19442235845020"
></a>
字段名称
</p>
...
...
@@ -117,7 +119,7 @@
<p
id=
"p8779163453213"
><a
name=
"p8779163453213"
></a><a
name=
"p8779163453213"
></a>
type
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
>
<p
id=
"p14727325235218"
><a
name=
"p14727325235218"
></a><a
name=
"p14727325235218"
></a>
字段说明:
<br>
  
必选字段,用来该参数的类型。
</p>
<p
id=
"p14727325235218"
><a
name=
"p14727325235218"
></a><a
name=
"p14727325235218"
></a>
字段说明:
<br>
  
必选字段,用来
标识
该参数的类型。
</p>
<p
id=
"p167271372203215"
><a
name=
"p167271372203215"
></a><a
name=
"p167271372203215"
></a>
取值范围:
</p>
<a
name=
"ul6717342214921"
></a><a
name=
"ul6717342214921"
></a>
<ul
id=
"ul6717134514921"
>
...
...
@@ -162,7 +164,27 @@
</tbody>
</table>
### yaml文件样例及说明<a name="section123181432175123"></a>
## 编写yaml文件<a name="section123181432175113"></a>
### yaml文件编写规则<a name="section123181432175133"></a>
-
事件领域命名规则:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围为1~16。
-
事件名称命名规则:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个事件领域内部事件名称的不能超过4096个。
-
参数命名规则:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个事件名称内包含的参数的个数不能超过128个。
### yaml文件编写样例<a name="section123181432175123"></a>
-
yaml文件样例指定的事件领域名称为MODULEA,该事件领域包含两个事件,名称分别是EVENT_NAMEA和EVENT_NAMEB。
-
EVENT_NAMEA被定义成错误类型的严重事件,该事件包含类型为字符串类型的NAME1参数、字符串类型的NAME2参数及无符号短整型类型的NAME3参数,可以通过事件领域MODULEA和事件名称EVENT_NAMEA对其进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
。
-
EVENT_NAMEB被定义成统计类型的一般事件,EVENT_NAMEB包含类型为无符号短整型类型的NAME1参数及整型类型的NAME2参数。因为EVENT_NAMEB在__BASE参数中定义了名称为tag1和tag2的两个事件标签,所以不仅可以通过事件领域MODULEA和事件名称EVENT_NAMEB对其进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
,,所以还可以通过事件标签对该事件进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
。
```
##########################################
...
...
@@ -181,19 +203,13 @@ EVENT_NAMEB:
__BASE: {type: STATISTIC, level: MINOR, tag: tag1 tag2, desc: event name b}
NAME1: {type: UINT16, desc: name1}
NAME2: {type: INT32, desc: name2}
```
**样例说明**
:
-
该yaml文件指定的事件领域名称为MODULEA,该事件领域包含两个事件,名称分别是EVENT_NAMEA和EVENT_NAMEB。
-
EVENT_NAMEA被定义成错误类型的严重事件,该事件包含类型为字符串类型的NAME1参数、字符串类型的NAME2参数及无符号短整型类型的NAME3参数,可以通过事件领域MODULEA和事件名称EVENT_NAMEA对其进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
。
-
EVENT_NAMEB被定义成统计类型的一般事件,EVENT_NAMEB包含类型为无符号短整型类型的NAME1参数及整型类型的NAME2参数。因为EVENT_NAMEB在__BASE参数中定义了名称为tag1和tag2的两个事件标签,所以不仅可以通过事件领域MODULEA和事件名称EVENT_NAMEB对其进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
,,所以还可以通过事件标签对该事件进行
[
实时订阅
](
subsys-dfx-hisysevent-read.md
)
。
## yaml文件的验证流程<a name="section123181432175115"></a>
## 验证yaml文件<a name="section123181432175115"></a>
###
yaml文件的路径配置
<a name="section123181432175135"></a>
###
配置yaml文件路径
<a name="section123181432175135"></a>
-
在bundle.js文件中通过
```hisysevent_config```
属性完成yaml文件的路径指定:
在bundle.js文件中通过
```hisysevent_config```
属性完成yaml文件的路径指定:
```
{
...
...
@@ -237,33 +253,36 @@ EVENT_NAMEB:
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>yaml文件可根据实际需求置于
部
件工程的任意目录下,只要在bundle.js文件指定即可。
>yaml文件可根据实际需求置于
组
件工程的任意目录下,只要在bundle.js文件指定即可。
###
yaml文件的编译
<a name="section123181432175137"></a>
###
编译yaml文件
<a name="section123181432175137"></a>
-
全量编译:
- 全量编译整个系统,会将所有
部
件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。
- 全量编译整个系统,会将所有
组
件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。
```
cd 工程根目录的绝对路径 | ./build --product-name <product name>
cd 工程根目录的绝对路径
./build --product-name <product name>
```
- 全量编译生成的hisysevent.def文件可以通过以下命令获取:
```
cd 工程根目录的绝对路径 | find out -name hisysevent.def -type f
cd 工程根目录的绝对路径
find out -name hisysevent.def -type f
```
-
单文件编译:
也可以只编译单个
部
件的yaml文件,命令如下:
也可以只编译单个
组
件的yaml文件,命令如下:
```
cd 工程根目录的绝对路径 | ./build/ohos/hisysevent/gen_def_from_all_yaml.py --yaml-list <yaml file list> --def-path <file store directory>
cd 工程根目录的绝对路径
./build/ohos/hisysevent/gen_def_from_all_yaml.py --yaml-list <yaml file list> --def-path <file store directory>
```
**表 3**
**表 3**
单文件编译参数说明
<a
name=
"table1844019587534"
></a>
<table><thead
align=
"left"
><tr
id=
"row1440056575118"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p19432435845020"
><a
name=
"p19432435845020"
></a><a
name=
"p19432435845020"
></a>
选项名称
</p>
...
...
@@ -289,8 +308,8 @@ EVENT_NAMEB:
</tbody>
</table>
### 打点
验证
<a name="section123181432175139"></a>
### 打点
及查询定义的事件
<a name="section123181432175139"></a>
1.
通过
[
hdc工具
](
subsys-toolchain-hdc-guide.md
)
将hisysevent.def文件推送到至设备的//system/etc/hiview/目录下;
1.
通过
[
hdc
_std
工具
](
subsys-toolchain-hdc-guide.md
)
将hisysevent.def文件推送到至设备的//system/etc/hiview/目录下;
2.
触发
HiSysEvent事件打点,通过
[
hisysevent工具
](
subsys-dfx-hisysevent-tool.md
)
查询历史HiSysEvent事件,确认触发的
HiSysEvent事件是否打点成功。
2.
触发
yaml文件自定义的HiSysEvent事件完成打点,通过[hisysevent -l]命令(subsys-dfx-hisysevent-tool.md)查询历史HiSysEvent事件,确认触发的自定义
HiSysEvent事件是否打点成功。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
浏览文件 @
2de1f829
...
...
@@ -3,6 +3,7 @@
-
[
概述
](
#section77571101789
)
-
[
接口说明
](
#section13480315886
)
-
[
开发实例
](
#section112771171317
)
-
[
打点配置指导
](
#section112771171321
)
## 概述<a name="section77571101789"></a>
...
...
@@ -282,4 +283,6 @@ C++接口实例
external_deps = [ "hisysevent_native:libhisysevent" ]
```
## 打点配置指导<a name="section112771171321"></a>
在进行HiSysEvent事件打点之前,需要先对HiSysEvent打点行为进行配置,具体可参考
[
《HiSysEvent打点配置指导》
](
subsys-dfx-hisysevent-write-config.md
)
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录