Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
da24ea1f
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看板
提交
da24ea1f
编写于
1月 29, 2022
作者:
X
xuyong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
HiSysEvent Tag订阅文档更新
Signed-off-by:
N
xuyong
<
xuyong59@huawei.com
>
上级
45f0acca
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
306 addition
and
16 deletion
+306
-16
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
+10
-10
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
+0
-2
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md
...evice-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md
+290
-0
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
+6
-4
未找到文件。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md
浏览文件 @
da24ea1f
...
...
@@ -150,10 +150,10 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
- 实现订阅回调接口:
```
#include "demo_listener.h"
#include <iostream>
#include "demo_listener.h"
#include <iostream>
void DemoListener::OnHandle(const std::string& domain, const std::string& eventName,
const int eventType, const std::string& eventDetail)
{
...
...
@@ -170,12 +170,12 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
- 通过HiSysEventManager类提供的AddEventListener接口注册回调对象:
```
auto demoListener = std::make_shared<DemoListener>();
// 事件标签规则订阅,规则类型为默认的全词匹配类型
ListenerRule tagRule("dfx");
// 事件标签规则订阅,规则类型为正则匹配类型
ListenerRule regRule("dfx.*", RuleType::REGULAR);
// 事件领域及事件名称规则订阅,规则类型为前缀匹配类型
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);
...
...
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
浏览文件 @
da24ea1f
...
...
@@ -54,8 +54,6 @@
> **说明:**
>当同时通过-t、-o及-n指定了相关订阅规则参数设置,则判断设置的事件标签是否为空,若不为空,则使用事件标签规则进行订阅,否则使用事件领域及事件名称订阅规则进行订阅。
## 查询历史HiSysEvent事件相关命令<a name="section1210623418539"></a>
查询历史HiSysEvent事件的基础命令:
...
...
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md
0 → 100644
浏览文件 @
da24ea1f
# HiSysEvent打点YAML文件配置指导<a name="ZH-CN_TOPIC_0000001080478132"></a>
-
[
概述
](
#section315316685115
)
-
[
yaml文件的编写
](
#section123181432175113
)
-
[
yaml文件编写规则
](
#section123181432175133
)
-
[
yaml文件样例
](
#section123181432175123
)
-
[
yaml文件的验证流程
](
#section123181432175115
)
-
[
yaml文件的路径配置
](
#section123181432175135
)
-
[
yaml文件的编译
](
#section123181432175137
)
-
[
打点验证
](
#section123181432175139
)
## 概述<a name="section315316685115"></a>
OpenHarmony编译框架会收集各个部件通过bundle.js文件所指定的yaml文件,然后通过python编译脚本解析校验这些yaml文件。通过解析校验之后,该python脚本还会将这些yaml文件中配置的信息转换成名为“hisysevent.def”的json文件。最后,编译框架会将此json文件打包到rom的在指定路径。
## yaml文件的编写<a name="section123181432175113"></a>
### yaml文件编写规则<a name="section123181432175133"></a>
1.
每个部件可以包含一个或多个yaml文件,每个yaml文件只能有一个domain,且不能与其他domain重名,domain的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围为1~16。
2.
每个domain包含零个或多个event,同一个domain内部的event不能重名,event的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个domain内部event的个数取值范围0~4096。
3.
每个event包含多个param,同一个event内部的param不能重名,param的命名规则如下:
-
字母开头,且只能由大写字母/数字/下划线组成;
-
字符串长度取值范围1~32;
-
单个event内部param的个数取值范围1~128。
每个event**必须且只能**包含一个名称为```__BASE```的param,此param组成如表1,其他param的名称可以自定义,具体组成如表2:
**表 1**
<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>
  
必选字段,用来标识该event的类型。
</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>
  
必选字段,用来标识该event的级别。
</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>
  
可选字段,用来标识该event的标签。
</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>
  
必选字段,用来对该event进行描述。
</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>
  
必选字段,用来该param的类型。
</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>
  
可选字段,用来标识数组类型param的长度。
</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>
  
必选字段,用来对该param进行描述。
</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="section123181432175123"></a>
```
##########################################
# the hisysevent definition for module a #
##########################################
domain: MODULEA
EVENT_NAMEA:
__BASE: {type: FAULT, level: CRITICAL, tag: tag1 tag2, 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: CRITICAL, desc: event name b}
NAME1: {type: UINT16, desc: name1}
NAME2: {type: UINT32, 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": {
}
}
}
```
> **说明:**
>yaml文件可根据实际需求置于部件工程的任意目录下,只要在bundle.js文件指定即可。
### yaml文件的编译<a name="section123181432175137"></a>
1. 全量编译:
- 全量编译整个系统,会将所有部件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。
```
cd 工程根目录的绝对路径 | ./build --product-name
<product
name
>
```
- 全量编译生成的hisysevent.def文件可以通过以下命令获取:
```
cd 工程根目录的绝对路径 | find out -name hisysevent.def -type f
```
2. 单文件编译:
也可以只编译单个部件的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工具](subsys-toolchain-hdc-guide.md)将hisysevent.def文件推送到至设备的//system/etc/hiview/目录下;
2. 触发HiSysEvent事件打点,通过[hisysevent工具](subsys-dfx-hisysevent-tool.md)查询历史HiSysEvent事件,确认触发的HiSysEvent事件是否打点成功。
zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md
浏览文件 @
da24ea1f
# HiSysEvent开发指导<a name="ZH-CN_TOPIC_0000001195021448"></a>
-
**[HiSysEvent打点指导](subsys-dfx-hisysevent-write.md)**
-
**[HiSysEvent打点指导](subsys-dfx-hisysevent-write.md)**
-
**[HiSysEvent
订阅指导](subsys-dfx-hisysevent-read.md)**
-
**[HiSysEvent
打点YAML文件配置指导](subsys-dfx-hisysevent-yaml-define.md)**
-
**[HiSysEvent
查询指导](subsys-dfx-hisysevent-select.md)**
-
**[HiSysEvent
订阅指导](subsys-dfx-hisysevent-read.md)**
-
**[HiSysEvent工具使用指导](subsys-dfx-hisysevent-tool.md)**
-
**[HiSysEvent查询指导](subsys-dfx-hisysevent-select.md)**
-
**[HiSysEvent工具使用指导](subsys-dfx-hisysevent-tool.md)**
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录