# 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文件的编译 - 全量编译: - 全量编译整个系统,会将所有部件配置的yaml文件中的配置进行汇总,正常完成系统编译后,指定目录下就会生成hisysevent.def文件。 ``` cd 工程根目录的绝对路径 | ./build --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 --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事件是否打点成功。