diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md index 18973ab3860b8c7044fa2c488058dd4c4ff09ec1..b4aaf98e1c28e2f7e20f82ee0b4f4ffaf4f7ad42 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md @@ -150,10 +150,10 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 - 实现订阅回调接口: ``` - #include "demo_listener.h" - - #include - + #include "demo_listener.h" + + #include + 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(); - // 事件标签规则订阅,规则类型为默认的全词匹配类型 - ListenerRule tagRule("dfx"); - // 事件标签规则订阅,规则类型为正则匹配类型 - ListenerRule regRule("dfx.*", RuleType::REGULAR); - // 事件领域及事件名称规则订阅,规则类型为前缀匹配类型 + auto demoListener = std::make_shared(); + // 事件标签规则订阅,规则类型为默认的全词匹配类型 + ListenerRule tagRule("dfx"); + // 事件标签规则订阅,规则类型为正则匹配类型 + ListenerRule regRule("dfx.*", RuleType::REGULAR); + // 事件领域及事件名称规则订阅,规则类型为前缀匹配类型 ListenerRule domainNameRule("HIVIEWDFX", "APP_USAGE", RuleType::PREFIX); std::vector sysRules; sysRules.push_back(tagRule); diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md index 7f26b9ceaf1d9b525ab918c29a10397736b5085a..0ffa9fd94e9bd270e28690a3d29bf5c2d030755b 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md @@ -54,8 +54,6 @@ >![](../public_sys-resources/icon-note.gif) **说明:** >当同时通过-t、-o及-n指定了相关订阅规则参数设置,则判断设置的事件标签是否为空,若不为空,则使用事件标签规则进行订阅,否则使用事件领域及事件名称订阅规则进行订阅。 - - ## 查询历史HiSysEvent事件相关命令 查询历史HiSysEvent事件的基础命令: diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md new file mode 100644 index 0000000000000000000000000000000000000000..dedc223c5b7d0eb865a59d8b75e3d9f8f60aeaa1 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-yaml-define.md @@ -0,0 +1,290 @@ +# HiSysEvent打点YAML文件配置指导 + +- [概述](#section315316685115) +- [yaml文件的编写](#section123181432175113) + - [yaml文件编写规则](#section123181432175133) + - [yaml文件样例](#section123181432175123) +- [yaml文件的验证流程](#section123181432175115) + - [yaml文件的路径配置](#section123181432175135) + - [yaml文件的编译](#section123181432175137) + - [打点验证](#section123181432175139) + +## 概述 + +OpenHarmony编译框架会收集各个部件通过bundle.js文件所指定的yaml文件,然后通过python编译脚本解析校验这些yaml文件。通过解析校验之后,该python脚本还会将这些yaml文件中配置的信息转换成名为“hisysevent.def”的json文件。最后,编译框架会将此json文件打包到rom的在指定路径。 + +## yaml文件的编写 + +### yaml文件编写规则 + +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** + + + + + + + + + + + + + + + + + + + + + + + +

字段名称

+

描述

+
+

type

+
+

字段说明:
  必选字段,用来标识该event的类型。

+

取值范围:

+ +
    +
  • FAULT:错误类型。
  • +
  • STATISTIC:统计类型。
  • +
  • SECURITY:安全性。
  • +
  • BEHAVIOR:用户行为。
  • +
+
+

level

+
+

字段作用:
  必选字段,用来标识该event的级别。

+

取值范围:

+ +
    +
  • CRITICAL:严格。
  • +
  • MINOR:一般。
  • +
+
+

tag

+
+

字段作用:
  可选字段,用来标识该event的标签。

+

定义规则:

+ +
    +
  • 最多可同时定义5个标签,标签之间使用空格来分隔。
  • +
  • 单个标签最多包含16个字符,字符范围[a-zA-Z0-9]。
  • +
+
+

desc

+
+

字段作用:
  必选字段,用来对该event进行描述。

+

定义规则:

+ +
    +
  • 至少包含3个字符,最多包含128个字符,字符范围[a-zA-Z0-9 _]
  • +
+
+ +**表 2** + + + + + + + + + + + + + + + + + + + +

字段名称

+

描述

+
+

type

+
+

字段说明:
  必选字段,用来该param的类型。

+

取值范围:

+ +
    +
  • BOOL
  • +
  • INT8
  • +
  • UINT8
  • +
  • INT16
  • +
  • UINT16
  • +
  • INT32
  • +
  • UINT32
  • +
  • INT64
  • +
  • UINT64
  • +
  • FLOAT
  • +
  • DOUBLE
  • +
  • STRING
  • +
+
+

arrsize

+
+

字段作用:
  可选字段,用来标识数组类型param的长度。

+

取值范围:
   1~100

+ +
+

desc

+
+

字段作用:
  必选字段,用来对该param进行描述。

+

定义规则:

+ +
    +
  • 至少包含3个字符,最多包含128个字符,字符范围[a-zA-Z0-9 _]
  • +
+
+ +### yaml文件样例 + +``` +########################################## +# 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文件的验证流程 + +### yaml文件的路径配置 + +- 在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文件的编译 + +1. 全量编译: + + - 全量编译整个系统,会将所有部件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。 + + ``` + cd 工程根目录的绝对路径 | ./build --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 --def-path + ``` + +**表 3** + + + + + + + + + + + + + +

选项名称

+

描述

+
+

--yaml-list

+
+

指定需要编译的yaml文件路径列表 多个yaml文件路径之间用空格分隔

+
+

--def-path

+
+

指定编译生成的hisysevent.def文件的生成路径

+
+ +### 打点验证 + +1. 通过[hdc工具](subsys-toolchain-hdc-guide.md)将hisysevent.def文件推送到至设备的//system/etc/hiview/目录下; + +2. 触发HiSysEvent事件打点,通过[hisysevent工具](subsys-dfx-hisysevent-tool.md)查询历史HiSysEvent事件,确认触发的HiSysEvent事件是否打点成功。 diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md index e6c333696abf1c8a39af48a4c9cc03158ff0e77d..669f06e1752dc2afb226348ded636dd7b6851c73 100755 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent.md @@ -1,11 +1,13 @@ # HiSysEvent开发指导 -- **[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)**