#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)

Posted 开源基础软件社区官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)相关的知识,希望对你有一定的参考价值。

「本文正在参加星光计划3.0--夏日挑战赛」

@toc

简介

设备开发,通常的问题分析主要靠日志记录,Openharmony的日志记录分很多种,我们用的最多的是Hilog。
此文章以openharmony 3.1代码基础,介绍另外一种记录: 事件打点(HiSysEvent)。

  • 打点源码分析
  • 打点在代码中应用
  • 打点测试工程的编译配置
  • 打点测试操作步骤
  • 本用例开发板(3516开发板:HiSpark_AI_Hi3516D_One_Light_VER.B开发板上测试)

    打点源码

    主要的源码目录

    打点调用库目录:base\\hiviewdfx\\hisysevent\\interfaces\\native\\innerkits\\hisysevent
    打点信息搜集存储进程:base\\hiviewdfx\\hiview
    打点测试进程(自己添加):myapp\\hisysevent_test 源码见附件

    测试进程和信息搜集进程流程

  • 打点调用进程通过套接字,发送打点信息。
  • hiview进程通过套接字接收打点信息,进行处理存储。
  • 事件处理插件配置的初始化读取
    1.事件是否通过线程来处理的配置:system\\etc\\hiview\\plugin_config,解析函数Plugin::BindWorkLoop
    2.事件格式的配置:system\\etc\\hiview\\hisysevent.def,解析函数SysEventService::OnLoad。hisysevent.def中没有定义的事件,不会存储在/data/log/LogService/sys_event_db/hisysevent.db中。
  • 接收数据的处理
    1.插件初始化的配置中配置了线程来处理,则接收消息会调用EventLoop::AddEvent进行处理存储。
    2.插件初始化的配置中未配置线程处理,则接收消息会调用Pipeline::ProcessEvent进行处理存储。

    测试工程配置

    代码目录结构


    源码见附件

    子系统配置

    build\\subsystem_config.json

    "myapp": 
    "path":"myapp",
    "name": "myapp"
    

    产品配置

    productdefine\\common\\products\\Hi3516DV300.json

    "myapp:hisysevent_test":

    事件domain配置(myapp源文件不包含,需要学习者自行配置)

    base\\hiviewdfx\\hisysevent\\interfaces\\native\\innerkits\\hisysevent\\include\\hisysevent.h

    static constexpr char HISYSEVENTTEST[] = "HISYSEVENTTEST";

    bundle.json配置

    格式定义和打点调用对比

    编译

    1. 全量编译:./build.sh --product-name Hi3516DV300 --ccache
      需要全量编译,才能将myapp\\hisysevent_test\\hisysevent_test.yaml的打点格式编译到hisysevent.def中去。
    2. 测试工程编译:./build.sh --product-name Hi3516DV300 --ccache --build-target hisyseventTest

      测试

  • 修改开发板的读写权限
    进入终端:hdc_std.exe shell
    修改权限:mount -o remount,rw /
    添加test目录:mkdir /data/test/

  • 将编译文件发送到开发板对应目录:
    测试应用:hdc_std.exe file send Z:\\L2.31\\out\\hi3516dv300\\myapp\\hisysevent_test\\hisyseventTest /data/test/
    打点信息格式文件:hdc_std.exe file send Z:\\L2.31\\out\\hi3516dv300\\packages\\phone\\system\\etc\\hiview\\hisysevent.def /system/etc/hiview/


    注意:如果hisysevent_test.yaml没有编入hisysevent.def,则需要去掉--ccache参数重新进行全量编译

  • 修改打点测试应用的执行权限
    切到对应的目录:cd /data/test/
    修改成可执行:chmod 0755 hisyseventTest
  • 修改系统时间,便于查看打点消息
    修改系统时间搓: date 2022-06-21
    同步硬件时钟: hwclock -w
    查询时间: date
  • 终端1:实时查看tag为HisysEvTest的打点消息
    hisysevent -r -t HisysEvTest
  • 终端2:执行测试打点的应用
    /data/test/hisyseventTest
  • 终端3:查看存储的打点消息
    hisysevent -l



    事件数据格式配置

附件链接:
myapp.rar(https://ost.51cto.com/resource/2079)
打点代码分析.ppt(https://ost.51cto.com/resource/2080)

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com/#bkwz

以上是关于#夏日挑战赛# OpenHarmony HiSysEvent打点调用实践(L2)的主要内容,如果未能解决你的问题,请参考以下文章

#夏日挑战赛# OpenHarmony基于JS实现的贪吃蛇

#夏日挑战赛#FFH分布式数据服务简单实现(OpenHarmony JS UI)

#夏日挑战赛# 用OpenHarmony eTS 实现一个Huawei app标准布局

#夏日挑战赛# HarmonyOS 实现一个手绘板

#夏日挑战赛#OHOS构建自定义服务实战

#夏日挑战赛#ELT.ZIP啃论文俱乐部——学术科研方法论沉淀辑