Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
de831a04
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,发现更多精彩内容 >>
未验证
提交
de831a04
编写于
2月 09, 2022
作者:
O
openharmony_ci
提交者:
Gitee
2月 09, 2022
浏览文件
操作
浏览文件
下载
差异文件
!1287 HiSysEvent Tag订阅相关API更新
Merge pull request !1287 from honghecun/master
上级
c4a32901
1455ad4d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
543 addition
and
109 deletion
+543
-109
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
+118
-73
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md
+8
-9
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
+77
-16
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write-config.md
...vice-dev/subsystems/subsys-dfx-hisysevent-write-config.md
+318
-0
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
+17
-6
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
+5
-5
未找到文件。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
浏览文件 @
de831a04
# HiSysEvent订阅指导<a name="ZH-CN_TOPIC_0000001185655868"></a>
-
[
概述
](
#section315316685112
)
-
[
接口说明
](
#section0342191810519
)
-
[
开发实例
](
#section123181432175110
)
-
[
C++接口实例
](
#section2016116181902
)
-
[
功能简介
](
#section123181433335224
)
-
[
约束与限制
](
#section123181433375224
)
-
[
开发指导
](
#section315316685113
)
-
[
接口说明
](
#section0342191810519
)
-
[
开发实例
](
#section123181432175110
)
## 概述<a name="section315316685112"></a>
### 功能简介<a name="section123181433335224"></a>
HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接口实时获取关注的事件,例如电池模块侦听功耗相关的事件,用于分析耗电情况。
## 接口说明<a name="section0342191810519"></a>
### 约束与限制<a name="section123181433375224"></a>
**HiSysEvent事件订阅条件约束:**
-
在订阅HiSysEvent事件之前,需要先完成HiSysEvent打点配置,具体配置方法请参考
[
《HiSysEvent打点配置指导》
](
subsys-dfx-hisysevent-write-config.md
)
。
## 开发指导<a name="section315316685113"></a>
### 接口说明<a name="section0342191810519"></a>
**表 1**
HiSysEvent订阅接口
<a
name=
"table1844019587496"
></a>
<table><thead
align=
"left"
><tr
id=
"row1440058184916"
><th
class=
"cellrowborder"
valign=
"top"
width=
"48.120000000000005%"
id=
"mcps1.2.3.1.1"
><p
id=
"p19441135844915"
><a
name=
"p19441135844915"
></a><a
name=
"p19441135844915"
></a>
接口名
</p>
<table><thead
align=
"left"
><tr
id=
"row1440058184916"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p19441135844915"
><a
name=
"p19441135844915"
></a><a
name=
"p19441135844915"
></a>
接口名称
</p>
</th>
<th
class=
"cellrowborder"
valign=
"top"
width=
"51.88%"
id=
"mcps1.2.3.1.2"
><p
id=
"p13441195815491"
><a
name=
"p13441195815491"
></a><a
name=
"p13441195815491"
></a>
描述
</p>
<th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.2"
><p
id=
"p13441195815491"
><a
name=
"p13441195815491"
></a><a
name=
"p13441195815491"
></a>
描述
</p>
</th>
</tr>
</thead>
<tbody><tr
id=
"row16441155818499"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.120000000000005%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p877916438211"
><a
name=
"p877916438211"
></a><a
name=
"p877916438211"
></a>
int HiSysEventManager::AddEventListener(std::shared_ptr
<
HiSysEventSubscribeCallBackBase
>
listener, std::vector
<
struct
ListenerRule
>&
rules)
</p>
<tbody><tr
id=
"row16441155818499"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p877916438211"
><a
name=
"p877916438211"
></a><a
name=
"p877916438211"
></a>
int HiSysEventManager::AddEventListener(std::shared_ptr
<
HiSysEventSubscribeCallBackBase
>
listener, std::vector
<
ListenerRule
>&
rules)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.88%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p14727325133216"
><a
name=
"p14727325133216"
></a><a
name=
"p14727325133216"
></a>
接口功能:
注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。
</p>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p14727325133216"
><a
name=
"p14727325133216"
></a><a
name=
"p14727325133216"
></a>
接口功能:
<br>
  
注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。
</p>
<p
id=
"p167271525203213"
><a
name=
"p167271525203213"
></a><a
name=
"p167271525203213"
></a>
输入参数:
</p>
<a
name=
"ul6717142214919"
></a><a
name=
"ul6717142214919"
></a><ul
id=
"ul6717142214919"
><li>
listener:订阅回调对象。
</li><li>
rules:事件订阅规则。
</li></ul>
<p
id=
"p83591223153818"
><a
name=
"p83591223153818"
></a><a
name=
"p83591223153818"
></a>
返回值:
</p>
<a
name=
"ul12105842111913"
></a><a
name=
"ul12105842111913"
></a><ul
id=
"ul12105842111913"
><li>
0:订阅成功,重复订阅。
</li><li>
1:订阅成功,初次订阅。
</li><li>
其他返回值:订阅失败。
</li></ul>
</td>
</tr>
<tr
id=
"row910319443242"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.120000000000005%
"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15104154411248"
><a
name=
"p15104154411248"
></a><a
name=
"p15104154411248"
></a>
void HiSysEventManager::RemoveListener(std::shared_ptr
<
HiSysEventSubscribeCallBackBase
>
listener)
</p>
<tr
id=
"row910319443242"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top
"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15104154411248"
><a
name=
"p15104154411248"
></a><a
name=
"p15104154411248"
></a>
void HiSysEventManager::RemoveListener(std::shared_ptr
<
HiSysEventSubscribeCallBackBase
>
listener)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.88%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1104194420248"
><a
name=
"p1104194420248"
></a><a
name=
"p1104194420248"
></a>
接口功能:
移除订阅hisysevent系统事件侦听对象。
</p>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1104194420248"
><a
name=
"p1104194420248"
></a><a
name=
"p1104194420248"
></a>
接口功能:
<br>
  
移除订阅hisysevent系统事件侦听对象。
</p>
<p
id=
"p7943171095411"
><a
name=
"p7943171095411"
></a><a
name=
"p7943171095411"
></a>
输入参数:
</p>
<a
name=
"ul894321075411"
></a><a
name=
"ul894321075411"
></a><ul
id=
"ul894321075411"
><li>
listener:订阅回调对象。
</li></ul>
<p
id=
"p9744631162515"
><a
name=
"p9744631162515"
></a><a
name=
"p9744631162515"
></a>
返回值:无。
</p>
<p
id=
"p9744631162515"
><a
name=
"p9744631162515"
></a><a
name=
"p9744631162515"
></a>
返回值:
<br>
  
无。
</p>
</td>
</tr>
</tbody>
...
...
@@ -43,110 +54,144 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
**表 2**
ListenerRule订阅规则对象
<a
name=
"table1
144011610564
"
></a>
<table><thead
align=
"left"
><tr
id=
"row1
24411716175611"
><th
class=
"cellrowborder"
valign=
"top"
width=
"48.11%"
id=
"mcps1.2.3.1.1"
><p
id=
"p19441151675610"
><a
name=
"p19441151675610"
></a><a
name=
"p19441151675610"
></a>
属性
名称
</p>
<a
name=
"table1
844019587498
"
></a>
<table><thead
align=
"left"
><tr
id=
"row1
440058184918"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p19441135844917"
><a
name=
"p19441135844917"
></a><a
name=
"p19441135844917"
></a>
接口
名称
</p>
</th>
<th
class=
"cellrowborder"
valign=
"top"
width=
"51.89%"
id=
"mcps1.2.3.1.2"
><p
id=
"p16441171616563"
><a
name=
"p16441171616563"
></a><a
name=
"p1644117161656
3"
></a>
描述
</p>
<th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.2"
><p
id=
"p13441195815493"
><a
name=
"p13441195815493"
></a><a
name=
"p1344119581549
3"
></a>
描述
</p>
</th>
</tr>
</thead>
<tbody><tr
id=
"row1
74411216105615"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.11%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p496413536613"
><a
name=
"p496413536613"
></a><a
name=
"p496413536613"
></a><span>
uint32_t
</span>
ruleType
</p>
<tbody><tr
id=
"row1
6441155818499"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p877916438213"
><a
name=
"p877916438213"
></a><a
name=
"p877916438213"
></a>
ListenerRule(const std::string
&
tag, RuleType ruleType = RuleType::WHOLE_WORD)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.89%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p94416160565"
><a
name=
"p94416160565"
></a><a
name=
"p94416160565"
></a>
规则类型(匹配范围包括domain以及eventName):
</p>
<a
name=
"ul1652866141814"
></a><a
name=
"ul1652866141814"
></a><ul
id=
"ul1652866141814"
><li>
1:全字符匹配。
</li><li>
2:前缀匹配。
</li><li>
3:正则表达式匹配。
</li><li>
其他值:无效的匹配方式。
</li></ul>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p14727325133218"
><a
name=
"p14727325133218"
></a><a
name=
"p14727325133218"
></a>
接口功能:
<br>
  
订阅规则构造函数,创建事件标签订阅规则对象。
</p>
<p
id=
"p167271525203215"
><a
name=
"p167271525203215"
></a><a
name=
"p167271525203215"
></a>
输入参数:
</p>
<a
name=
"ul6717142214921"
></a><a
name=
"ul6717142214921"
></a><ul
id=
"ul6717142214921"
>
<li>
tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。
</li>
<li>
ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。
</li></ul>
</td>
</tr>
<tr
id=
"row
64411816125614"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.11%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1258135313712"
><a
name=
"p1258135313712"
></a><a
name=
"p1258135313712"
></a>
std::string domain
</p>
<tr
id=
"row
910319443244"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15104154411250"
><a
name=
"p15104154411250"
></a><a
name=
"p15104154411250"
></a>
ListenerRule(const std::string
&
domain, const std::string
&
eventName, RuleType ruleType = RuleType::WHOLE_WORD)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.89%"
headers=
"mcps1.2.3.1.2 "
><a
name=
"ul14905926102311"
></a><a
name=
"ul14905926102311"
></a><ul
id=
"ul14905926102311"
><li>
domain:事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。
</li></ul>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p15104154411250"
><a
name=
"p15104154411250"
></a><a
name=
"p15104154411250"
></a>
接口功能:
<br>
  
订阅规则构造函数,创建事件领域与事件名称订阅规则对象。
</p>
<p
id=
"p7943171095413"
><a
name=
"p7943171095413"
></a><a
name=
"p7943171095413"
></a>
输入参数:
</p>
<a
name=
"ul894321075413"
></a><a
name=
"ul894321075413"
></a><ul
id=
"ul894321075413"
>
<li>
domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。
</li>
<li>
eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。
</li>
<li>
ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。
</li></ul>
</td>
</tr>
<tr
id=
"row
244161615619"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.11%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p227913101887"
><a
name=
"p227913101887"
></a><a
name=
"p227913101887"
></a>
std::string eventName
</p>
<tr
id=
"row
910319443246"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15104154411252"
><a
name=
"p15104154411252"
></a><a
name=
"p15104154411252"
></a>
ListenerRule(const std::string
&
domain, const std::string& eventName, const std::string
&
tag, RuleType ruleType = RuleType::WHOLE_WORD)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.89%"
headers=
"mcps1.2.3.1.2 "
><a
name=
"ul248063132319"
></a><a
name=
"ul248063132319"
></a><ul
id=
"ul248063132319"
><li>
eventName:事件的名称,如果传入的是空字符串,则默认事件名称字段匹配成功。
</li></ul>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p15104154411252"
><a
name=
"p15104154411252"
></a><a
name=
"p15104154411252"
></a>
接口功能:
<br>
  
订阅规则构造函数,创建事件领域、事件名称,事件标签订阅规则对象。
</p>
<p
id=
"p7943171095415"
><a
name=
"p7943171095415"
></a><a
name=
"p7943171095415"
></a>
输入参数:
</p>
<a
name=
"ul894321075415"
></a><a
name=
"ul894321075415"
></a><ul
id=
"ul894321075415"
>
<li>
tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。
</li>
<li>
domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。
</li>
<li>
eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。
</li>
<li>
ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。
</li></ul></ul>
</td>
</tr>
</tbody>
</table>
**表 3**
HiSysEventSubscribeCallBackBase订阅对象
**表 3**
RuleType类型
| 枚举值 | 描述 |
| ------------ | ------------- |
| WHOLE_WORD | 全词匹配类型 |
| PREFIX | 前缀匹配类型 |
| REGULAR | 正则匹配类型 |
**表 4**
HiSysEventSubscribeCallBackBase订阅对象
<a
name=
"table1011703742711"
></a>
<table><thead
align=
"left"
><tr
id=
"row121187375270"
><th
class=
"cellrowborder"
valign=
"top"
width=
"48.25%"
id=
"mcps1.2.3.1.1"
><p
id=
"p2118143782719"
><a
name=
"p2118143782719"
></a><a
name=
"p2118143782719"
></a>
接口名称
</p>
<table><thead
align=
"left"
><tr
id=
"row121187375270"
><th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.1"
><p
id=
"p2118143782719"
><a
name=
"p2118143782719"
></a><a
name=
"p2118143782719"
></a>
接口名称
</p>
</th>
<th
class=
"cellrowborder"
valign=
"top"
width=
"51.74999999999999%"
id=
"mcps1.2.3.1.2"
><p
id=
"p4118037152710"
><a
name=
"p4118037152710"
></a><a
name=
"p4118037152710"
></a>
描述
</p>
<th
class=
"cellrowborder"
valign=
"top"
id=
"mcps1.2.3.1.2"
><p
id=
"p4118037152710"
><a
name=
"p4118037152710"
></a><a
name=
"p4118037152710"
></a>
描述
</p>
</th>
</tr>
</thead>
<tbody><tr
id=
"row111823719274"
><td
class=
"cellrowborder"
valign=
"top"
width=
"48.25%
"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p161181537112712"
><a
name=
"p161181537112712"
></a><a
name=
"p161181537112712"
></a>
void HiSysEventSubscribeCallBackBase::OnHandle(const std::string
&
domain, const std::string
&
eventName, const int eventType, const std::string
&
eventDetail)
</p>
<tbody><tr
id=
"row111823719274"
><td
class=
"cellrowborder"
width=
"60%"
valign=
"top
"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p161181537112712"
><a
name=
"p161181537112712"
></a><a
name=
"p161181537112712"
></a>
void HiSysEventSubscribeCallBackBase::OnHandle(const std::string
&
domain, const std::string
&
eventName, const int eventType, const std::string
&
eventDetail)
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"51.74999999999999%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1772213111011"
><a
name=
"p1772213111011"
></a><a
name=
"p1772213111011"
></a>
接口功能:
订阅事件的回调接口。
</p>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1772213111011"
><a
name=
"p1772213111011"
></a><a
name=
"p1772213111011"
></a>
接口功能:
<br>
  
订阅事件的回调接口。
</p>
<p
id=
"p182081719151016"
><a
name=
"p182081719151016"
></a><a
name=
"p182081719151016"
></a>
输入参数:
</p>
<a
name=
"ul02091819131015"
></a><a
name=
"ul02091819131015"
></a><ul
id=
"ul02091819131015"
><li>
domain:事件所属领域。
</li><li>
eventName:事件的名称。
</li><li>
eventType:事件类型。
</li><li>
eventDetail:包含事件相关信息的字符串,以json的形式体现。
</li></ul>
<p
id=
"p18209419201010"
><a
name=
"p18209419201010"
></a><a
name=
"p18209419201010"
></a>
返回值:无。
</p>
<p
id=
"p18209419201010"
><a
name=
"p18209419201010"
></a><a
name=
"p18209419201010"
></a>
返回值:
<br>
  
无。
</p>
</td>
</tr>
</tbody>
</table>
## 开发实例<a name="section123181432175110"></a>
##
#
开发实例<a name="section123181432175110"></a>
### C++接口实例<a name="section2016116181902"></a>
订阅HiSysEvent事件C++接口实例
本实例介绍如何订阅domain=HIVIEWDFX的所有系统事件。
1.
源代码开发
1.
源代码开发
:
自定义订阅回调实现类头文件DemoListener.h
:
- 引入对应的头文件:
```
#ifndef DEMO_LISTENER_H
#define DEMO_LISTENER_H
hisysevent\_manager.h。
#include "hisysevent_subscribe_callback_native.h"
- 实现回调接口:
#include <string>
HiSysEventSubscribeCallBackBase::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\)。
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();
};
#endif DEMO_LISTENER_H
```
- 注册回调对象
:
增加DemoListener.cpp文件,在DemoListener类中根据实际需求自定义订阅回调接口的实现逻辑
:
HiSysEventManager::AddEventListener\(std::shared\_ptr<HiSysEventSubscribeCallBackBase\> listener, std::vector<struct ListenerRule\>& rules\)。
```
#include "demo_listener.h"
#include <iostream>
```
// 以下是订阅domain=HIVIEWDFX的所有系统事件的应用例子
#include "hisysevent_manager.h"
#include <iostream>
namespace OHOS {
namespace HiviewDFX {
// 实现订阅回调对象的接口
void HiSysEventToolListener::OnHandle(const std::string& domain, const std::string& eventName,
const int eventType, const std::string& eventDetail)
{
std::cout << eventDetail << std::endl;
}
void HiSysEventToolListener::OnServiceDied()
{
std::cout << std::string("service disconnect, exit") << std::endl;
exit(0);
}
} // namespace HiviewDFX
} // namespace OHOS
// 调用订阅接口注册开发实现的订阅对象
auto toolListener = std::make_shared<HiSysEventToolListener>();
struct ListenerRule rule;
rule.ruleType = 1; // 1: default type
rule.domain = "HIVIEWDFX";
std::vector<struct ListenerRule> sysRules;
sysRules.push_back(rule);
HiSysEventManager::AddEventListener(toolListener, sysRules);
```
void DemoListener::OnHandle(const std::string& domain, const std::string& eventName,
const int eventType, const std::string& eventDetail)
{
std::cout << eventDetail << std::endl;
}
2.
编译设置:
void DemoListener::OnServiceDied()
{
std::cout << std::string("service disconnect, exit") << std::endl;
exit(0);
}
```
在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。
通过HiSysEventManager类提供的AddEventListener接口注册回调对象,完成对HiSysEvent的订阅:
```
external_deps = [ "hisysevent_native:libhisyseventmanager", ]
```
```
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);
```
2.
编译配置
在BUILD.gn编译文件中,需要添加依赖hisysevent\_native组件的libhisyseventmanager库:
```
external_deps = [ "hisysevent_native:libhisyseventmanager", ]
```
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md
浏览文件 @
de831a04
# HiSysEvent查询指导<a name="ZH-CN_TOPIC_0000001231455461"></a>
-
[
概述
](
#section279684125212
)
-
[
接口说明
](
#section03869128521
)
-
[
开发实例
](
#section14286111855212
)
-
[
C++接口实例
](
#section162045551743
)
-
[
开发指导
](
#section315316761113
)
-
[
接口说明
](
#section03869128521
)
-
[
开发实例
](
#section14286111855212
)
## 概述<a name="section279684125212"></a>
HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事件,例如功耗部件可以通过该接口获取所需的系统事件进行业务分析。
## 接口说明<a name="section03869128521"></a>
## 开发指导<a name="section315316761113"></a>
### 接口说明<a name="section03869128521"></a>
**表 1**
HiSysEvent查询接口
...
...
@@ -115,11 +116,9 @@ HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事
</tbody>
</table>
## 开发实例<a name="section14286111855212"></a>
### C++接口实例<a name="section162045551743"></a>
### 开发实例<a name="section14286111855212"></a>
本实例介绍如何查询所有系统事件
。
C++接口实例
。
1.
源代码开发:
...
...
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
浏览文件 @
de831a04
# HiSysEvent工具使用指导<a name="ZH-CN_TOPIC_0000001231614021"></a>
-
[
概述
](
#section1886702718521
)
-
[
使用指导
](
#section1210623418527
)
-
[
实时订阅HiSysEvent事件相关命令
](
#section1210623418527
)
-
[
查询历史HiSysEvent事件相关命令
](
#section1210623418539
)
## 概述<a name="section1886702718521"></a>
目前
系统预制了HiSysEvent小工具,可以通过命令行参数,设置查询条件,查询满足要求的HiSysEvent系统事件,支撑开发者在开发过程中是否打点成功,以及故障定位时系统所发生的事件等研发场景
。
目前
在系统的/system/bin目录下预置了hisysevent工具,开发者可以通过此工具实时订阅HiSysEvent事件及查询历史HiSysEvent事件
。
##
使用指导
<a name="section1210623418527"></a>
##
实时订阅HiSysEvent事件相关命令
<a name="section1210623418527"></a>
1.
HiSysEvent工具的参数
:
-
实时订阅HiSysEvent事件的基础命令
:
工具预置在/system/bin目录下,命令可以在任意目录执行。
```
hisysevent -r
```
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -r | 以缺省设置实时订阅HiSysEvent事件,在此种订阅方式下有任何实时HiSysEvent事件产生,都会在控制台上打印此HiSysEvent事件 |
-
打开调试模式:
```
hisysevent [-r | -l [-s <time> -e <time> -m <count>]]
-r get real hisysevent log.
-l -s <begin time> -e <end time> -m <max hisysevent count>
get history hisysevent log, begin time should not be earlier than end time.
hisysevent -r -d
```
2.
查询实时HiSysEvent事件的命令:
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -d | 在调试模式下实时订阅HiSysEvent事件 |
-
通过事件标签方式实时订阅HiSysEvent事件:
```
hisysev
ent -r
hisysev
net -r -t <tag> [-c [WHOLE_WORD|PREFIX|REGULAR]]
```
当实时HiSysEvent事件过来的时候,会在控制台上打印一条HiSysEvent事件。
选项说明:
3.
查询历史HiSysEvent事件的命令:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -t | 设置实时订阅的HiSysEvent事件标签,用来过滤订阅的HiSysEvent事件 |
| -c | 设置实时订阅的HiSysEvent事件标签匹配规则,有“WHOLE_WORD”、“PREFIX”、“REGULAR”三种匹配规则|
-
通过事件领域及事件名称的方式实时订阅HiSysEvent事件:
```
hisysevent -
l -s <begin time> -e <end time> -m <max hisysevent count>
hisysevent -
r -o <domain> -n <eventName> [-c [WHOLE_WORD|PREFIX|REGULAR]]
```
其中-s和-e分别指定了事件生成的开始时间和结束时间,如果没有-s或者-e,代表查询时间无下限/无上限。
| 选项名称 | 功能说明 |
| -------- | --------- |
| -o | 设置实时订阅的HiSysEvent事件领域,用来过滤订阅的HiSysEvent事件 |
| -n | 设置实时订阅的HiSysEvent事件名称,用来过滤订阅的HiSysEvent事件|
| -c | 设置实时订阅的HiSysEvent事件领域及事件名称的匹配规则,有“WHOLE_WORD”、“PREFIX”、“REGULAR”三种匹配规则|
>![](../public_sys-resources/icon-note.gif) **说明:**
>当同时通过-t、-o及-n指定了相关订阅规则参数设置,则判断设置的事件标签是否为空,若不为空,则使用事件标签规则进行订阅,否则使用事件领域及事件名称订阅规则进行订阅。
-m参数制定了本次查询最多返回的时间条数。
## 查询历史HiSysEvent事件相关命令<a name="section1210623418539"></a>
-
查询历史HiSysEvent事件的基础命令:
```
hisysevent -l
```
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -l | 以缺省设置查询历史HiSysEvent事件,此次查询会返回最近不多于1000条的HiSysEvent事件 |
-
通过设置开始/结束时间,过滤查询历史HiSysEvent事件的结果的命令:
```
hisysevent -l -s <begin time> -e <end time>
```
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -s | 设置查询历史HiSysEvent事件的开始时间,此次查询只会返回不早于该时间点的HiSysEvent事件 |
| -e | 设置查询历史HiSysEvent事件的结束时间,此次查询只会返回不晚于该时间点的HiSysEvent事件 |
-
通过设置最大数量值,限制查询历史HiSysEvent事件的数量:
```
hisysevent -l -m <max hisysevent count>
```
选项说明:
| 选项名称 | 功能说明 |
| -------- | --------- |
| -m | 设置查询历史HiSysEvent事件的数量,有效值范围[0,1000],此次查询返回的HiSysEvent事件数目不会多于此值。 |
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write-config.md
0 → 100644
浏览文件 @
de831a04
# HiSysEvent打点配置指导<a name="ZH-CN_TOPIC_0000001080478132"></a>
-
[
概述
](
#section315316685115
)
-
[
基本概念
](
#section123181432175143
)
-
[
约束与限制
](
#section123181432175114
)
-
[
编写yaml文件
](
#section123181432175113
)
-
[
yaml文件编写规则
](
#section123181432175133
)
-
[
yaml文件编写样例
](
#section123181432175123
)
-
[
验证yaml文件
](
#section123181432175115
)
-
[
配置yaml文件路径
](
#section123181432175135
)
-
[
编译yaml文件
](
#section123181432175137
)
-
[
打点及查询定义的事件
](
#section123181432175139
)
## 概述<a name="section315316685115"></a>
组件若有HiSysEvent事件的打点需求,则需要先定义yaml文件并在bundle.js文件中
[
配置yaml文件的路径
](
#section123181432175135
)
。OpenHarmony编译框架在编译过程中则会通过python编译脚本解析校验bundle.js文件指定的所有yaml文件。在解析校验之后,编译框架会将这些yaml文件中配置的信息汇总转换成名为hisysevent.def的json文件。最后,将此json文件打包到系统指定路径下,用作HiSysEvent事件落盘的判断依据。
### 基本概念<a name="section123181432175143"></a>
在配置HiSysEvent打点之前,开发者应了解以下基本概念:
-
事件领域
用于标识事件所属的领域,在yaml文件中以domain为键值指定,可参考yaml文件样例中的
[
domain
](
#section123181432175123
)
。
-
事件名称
用于指定事件领域包含的所有事件,可参考yaml文件样例中的
[
EVENT_NAMEA/EVENT_NAMEB
](
#section123181432175123
)
。
-
参数
用于定义某个事件名称包含的所有键值,可参考yaml文件样例中的
[
__BASE/NAME1/NAME2
](
#section123181432175123
)
。
### 约束与限制<a name="section123181432175114"></a>
**定义事件领域、事件名称及参数的约束与限制:**
-
每个yaml文件只能有一个事件领域,且不能与其他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>
</th>
<th class="cellrowborder" valign="top" id="mcps1.2.3.1.2"><p id="p13441195865593"><a name="p13441195865593"></a><a name="p13441195865593"></a>描述</p>
</th>
</tr>
</thead>
<tbody><tr id="row16441155868499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916438213"><a name="p877916438613"></a><a name="p877916438613"></a>type</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727325136218"><a name="p14727325136218"></a><a name="p14727325136218"></a>字段说明:<br>  必选字段,用来标识该事件名称的类型。</p>
<p id="p167271525203615"><a name="p167271525203615"></a><a name="p167271525203615"></a>取值范围:</p>
<a name="ul6717142214621"></a><a name="ul6717142214621"></a>
<ul id="ul6717142214621">
<li>FAULT:错误类型。</li>
<li>STATISTIC:统计类型。</li>
<li>SECURITY:安全性。</li>
<li>BEHAVIOR:用户行为。</li>
</ul>
</td>
</tr>
<tr id="row16441155818699">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916438616"><a name="p877916438616"></a><a name="p877916438616"></a>level</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727325153218"><a name="p14727325153218"></a><a name="p14727325153218"></a>字段作用:<br>  必选字段,用来标识该事件名称的级别。</p>
<p id="p167271525213215"><a name="p167271525213215"></a><a name="p167271525213215"></a>取值范围:</p>
<a name="ul6717142215021"></a><a name="ul6717142215021"></a>
<ul id="ul6717142215021">
<li>CRITICAL:严重。</li>
<li>MINOR:一般。</li>
</ul>
</td>
</tr>
<tr id="row16441155818519">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916458213"><a name="p877916458213"></a><a name="p877916458213"></a>tag</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727327733218"><a name="p14727327733218"></a><a name="p14727327733218"></a>字段作用:<br>  可选字段,用来标识该事件名称的标签。</p>
<p id="p167271395203215"><a name="p167271395203215"></a><a name="p167271395203215"></a>定义规则:</p>
<a name="ul6717143414921"></a><a name="ul6717143414921"></a>
<ul id="ul6717143414921">
<li>最多可同时定义5个标签,标签之间使用空格来分隔。</li>
<li>单个标签最多包含16个字符,字符范围[a-zA-Z0-9]。</li>
</ul>
</td>
</tr>
<tr id="row16441155817799">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916477213"><a name="p877916477213"></a><a name="p877916477213"></a>desc</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727725133218"><a name="p14727725133218"></a><a name="p14727725133218"></a>字段作用:<br>  必选字段,用来对该事件名称进行描述。</p>
<p id="p167277525203215"><a name="p167277525203215"></a><a name="p167277525203215"></a>定义规则:</p>
<a name="ul6777142214921"></a><a name="ul6777142214921"></a>
<ul id="ul6777142214921">
<li>至少包含3个字符,最多包含128个字符,字符范围[a-zA-Z0-9 _]</li>
</ul>
</td>
</tr>
</tbody>
</table>
**表 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>
</th>
<th class="cellrowborder" valign="top" id="mcps1.2.3.1.2"><p id="p13331195815593"><a name="p13331195815593"></a><a name="p13331195815593"></a>描述</p>
</th>
</tr>
</thead>
<tbody><tr id="row16441232818499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<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="p167271372203215"><a name="p167271372203215"></a><a name="p167271372203215"></a>取值范围:</p>
<a name="ul6717342214921"></a><a name="ul6717342214921"></a>
<ul id="ul6717134514921">
<li>BOOL</li>
<li>INT8</li>
<li>UINT8</li>
<li>INT16</li>
<li>UINT16</li>
<li>INT32</li>
<li>UINT32</li>
<li>INT64</li>
<li>UINT64</li>
<li>FLOAT</li>
<li>DOUBLE</li>
<li>STRING</li>
</ul>
</td>
</tr>
<tr id="row16326155818499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877567438213"><a name="p877567438213"></a><a name="p877567438213"></a>arrsize</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727324893218"><a name="p14727324893218"></a><a name="p14727324893218"></a>字段作用:<br>  可选字段,用来标识数组类型参数的长度。</p>
<p id="p1672715498703215"><a name="p1672715498703215"></a><a name="p1672715498703215"></a>取值范围:<br>   1~100</p>
</ul>
</td>
</tr>
<tr id="row16556155818499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p845916438213"><a name="p845916438213"></a><a name="p845916438213"></a>desc</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727343133218"><a name="p14727343133218"></a><a name="p14727343133218"></a>字段作用:<br>  必选字段,用来对该参数进行描述。</p>
<p id="p167271524323215"><a name="p167271524323215"></a><a name="p167271524323215"></a>定义规则:</p>
<a name="ul6717142111921"></a><a name="ul6717142111921"></a>
<ul id="ul6717156714921">
<li>至少包含3个字符,最多包含128个字符,字符范围[a-zA-Z0-9 _]</li>
</ul>
</td>
</tr>
</tbody>
</table>
## 编写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
)
。
```
##########################################
# the hisysevent definition for module a #
##########################################
domain: MODULEA
EVENT_NAMEA:
__BASE: {type: FAULT, level: CRITICAL, desc: event name a}
NAME1: {type: STRING, desc: name1}
NAME2: {type: STRING, desc: name2}
NAME3: {type: UINT16, desc: name3}
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文件<a name="section123181432175115"></a>
### 配置yaml文件路径<a name="section123181432175135"></a>
在bundle.js文件中通过
```hisysevent_config```
属性完成yaml文件的路径指定:
```
{
"name": "@ohos/moduel_a",
"description": "module a",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "moduel_a_path"
},
"dirs": {},
"scripts": {},
"component": {
"name": "hisysevent_native",
"subsystem": "hiviewdfx",
"adapted_system_type": [
"standard"
],
"rom": "",
"ram": "",
"hisysevent_config": [
"//moduel_a_path/yaml_file1.yaml",
"//moduel_a_path/yaml_file2.yaml"
],
"deps": {
"components": [
"hilog_native",
"hitrace_native",
"ipc",
"safwk",
"samgr_standard",
"utils_base"
],
"third_party": []
},
"build": {
}
}
}
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>yaml文件可根据实际需求置于组件工程的任意目录下,只要在bundle.js文件指定即可。
### 编译yaml文件<a name="section123181432175137"></a>
-
全量编译:
- 全量编译整个系统,会将所有组件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。
```
cd 工程根目录的绝对路径
./build --product-name <product name>
```
- 全量编译生成的hisysevent.def文件可以通过以下命令获取:
```
cd 工程根目录的绝对路径
find out -name hisysevent.def -type f
```
-
单文件编译:
也可以只编译单个组件的yaml文件,命令如下:
```
cd 工程根目录的绝对路径
./build/ohos/hisysevent/gen_def_from_all_yaml.py --yaml-list <yaml file list> --def-path <file store directory>
```
**表 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>
</th>
<th class="cellrowborder" valign="top" id="mcps1.2.3.1.2"><p id="p13441196715593"><a name="p13441196715593"></a><a name="p13441196715593"></a>描述</p>
</th>
</tr>
</thead>
<tbody><tr id="row16441155854499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916558213"><a name="p877916558213"></a><a name="p877916558213"></a>--yaml-list</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727325133218"><a name="p14727325133218"></a><a name="p14727325133218"></a>指定需要编译的yaml文件路径列表,多个yaml文件路径之间用空格分隔。</p>
</td><tr id="row16441155832499">
<td class="cellrowborder" width="60%" valign="top" headers="mcps1.2.3.1.1 ">
<p id="p877916421213"><a name="p877916421213"></a><a name="p877916421213"></a>--def-path</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.3.1.2 ">
<p id="p14727323533218"><a name="p14727323533218"></a><a name="p14727323533218"></a>指定编译生成的hisysevent.def文件的生成路径。</p>
</td>
</tr>
</tbody>
</table>
### 打点及查询定义的事件<a name="section123181432175139"></a>
1.
通过
[
hdc_std工具
](
subsys-toolchain-hdc-guide.md
)
将hisysevent.def文件推送到至设备的//system/etc/hiview/目录下;
2.
触发yaml文件自定义的HiSysEvent事件完成打点,通过
[
hisysevent -l
](
subsys-dfx-hisysevent-tool.md
)
命令查询历史HiSysEvent事件,确认触发的自定义HiSysEvent事件是否打点成功。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-write.md
浏览文件 @
de831a04
# HiSysEvent打点指导<a name="ZH-CN_TOPIC_0000001231373947"></a>
-
[
概述
](
#section77571101789
)
-
[
接口说明
](
#section13480315886
)
-
[
开发实例
](
#section112771171317
)
-
[
功能简介
](
#section123133332175224
)
-
[
约束与限制
](
#section123181432175224
)
-
[
开发指导
](
#section314416685113
)
-
[
接口说明
](
#section13480315886
)
-
[
开发实例
](
#section112771171317
)
## 概述<a name="section77571101789"></a>
### 功能简介<a name="section123133332175224"></a>
HiSysEvent提供OpenHarmony打点接口,通过在关键路径打点记录系统在运行过程中的重要信息,辅助开发者定位问题,此外还支持开发者将数据上传到云进行大数据质量度量。
## 接口说明<a name="section13480315886"></a>
### 约束与限制<a name="section123181432175224"></a>
**HiSysEvent事件打点条件约束:**
-
在进行HiSysEvent事件打点之前,需要先完成HiSysEvent打点配置,具体配置方法请参考
[
《HiSysEvent打点配置指导》
](
subsys-dfx-hisysevent-write-config.md
)
。
## 开发指导<a name="section314416685113"></a>
### 接口说明<a name="section13480315886"></a>
C++打点接口如下:
...
...
@@ -258,7 +271,7 @@ HiSysEvent类,具体的API详见接口文档 。
</tbody>
</table>
## 开发实例<a name="section112771171317"></a>
##
#
开发实例<a name="section112771171317"></a>
C++接口实例
...
...
@@ -281,5 +294,3 @@ C++接口实例
```
external_deps = [ "hisysevent_native:libhisysevent" ]
```
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
浏览文件 @
de831a04
# HiSysEvent开发指导<a name="ZH-CN_TOPIC_0000001195021448"></a>
-
**[HiSysEvent打点
指导](subsys-dfx-hisysevent-write.md)**
-
**[HiSysEvent打点
配置指导](subsys-dfx-hisysevent-write-config.md)**
-
**[HiSysEvent
订阅指导](subsys-dfx-hisysevent-read.md)**
-
**[HiSysEvent
打点指导](subsys-dfx-hisysevent-write.md)**
-
**[HiSysEvent查询指导](subsys-dfx-hisysevent-select.md)**
-
**[HiSysEvent工具使用指导](subsys-dfx-hisysevent-tool.md)**
-
**[HiSysEvent订阅指导](subsys-dfx-hisysevent-read.md)**
-
**[HiSysEvent查询指导](subsys-dfx-hisysevent-select.md)**
-
**[HiSysEvent工具使用指导](subsys-dfx-hisysevent-tool.md)**
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录