OpenHarmony HiSysEvent打點(diǎn)調(diào)用實(shí)踐(L2)
??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??
簡(jiǎn)介
設(shè)備開發(fā),通常的問題分析主要靠日志記錄,Openharmony的日志記錄分很多種,我們用的最多的是Hilog。
此文章以openharmony 3.1代碼基礎(chǔ),介紹另外一種記錄: 事件打點(diǎn)(HiSysEvent)。
- 打點(diǎn)源碼分析。
- 打點(diǎn)在代碼中應(yīng)用。
- 打點(diǎn)測(cè)試工程的編譯配置。
- 打點(diǎn)測(cè)試操作步驟。
- 本用例開發(fā)板(3516開發(fā)板:HiSpark_AI_Hi3516D_One_Light_VER.B開發(fā)板上測(cè)試)。
打點(diǎn)源碼
主要的源碼目錄
- 打點(diǎn)調(diào)用庫(kù)目錄:base\hiviewdfx\hisysevent\interfaces\native\innerkits\hisysevent。
- 打點(diǎn)信息搜集存儲(chǔ)進(jìn)程:base\hiviewdfx\hiview。
- 打點(diǎn)測(cè)試進(jìn)程(自己添加):myapp\hisysevent_test 源碼見附件。
測(cè)試進(jìn)程和信息搜集進(jìn)程流程
- 打點(diǎn)調(diào)用進(jìn)程通過套接字,發(fā)送打點(diǎn)信息。
- hiview進(jìn)程通過套接字接收打點(diǎn)信息,進(jìn)行處理存儲(chǔ)。
- 事件處理插件配置的初始化讀取。
1.事件是否通過線程來處理的配置:?system\etc\hiview\plugin_config?,解析函數(shù)Plugin::BindWorkLoop?2.事件格式的配置:system\etc\hiview\hisysevent.def,解析函數(shù)SysEventService::OnLoad。hisysevent.def中沒有定義的事件,不會(huì)存儲(chǔ)在/data/log/LogService/sys_event_db/hisysevent.db中。 - 接收數(shù)據(jù)的處理。
1.插件初始化的配置中?配置了?線程來處理,則接收消息會(huì)調(diào)用EventLoop::AddEvent?進(jìn)行處理存儲(chǔ)。2.插件初始化的配置中?未配置?線程處理,則接收消息會(huì)調(diào)用Pipeline::ProcessEvent進(jìn)行處理存儲(chǔ)。
測(cè)試工程配置
代碼目錄結(jié)構(gòu)
源碼見附件。
子系統(tǒng)配置
build\subsystem_config.json。
"myapp": {
"path":"myapp",
"name": "myapp"
}
產(chǎn)品配置
productdefine\common\products\Hi3516DV300.json。
"myapp:hisysevent_test":{}
事件domain配置(myapp源文件不包含,需要學(xué)習(xí)者自行配置)
base\hiviewdfx\hisysevent\interfaces\native\innerkits\hisysevent\include\hisysevent.h。
static constexpr char HISYSEVENTTEST[] = "HISYSEVENTTEST";
bundle.json配置
格式定義和打點(diǎn)調(diào)用對(duì)比
編譯
- 全量編譯:./build.sh --product-name Hi3516DV300 --ccache?需要全量編譯,才能將myapp\hisysevent_test\hisysevent_test.yaml的打點(diǎn)格式編譯到hisysevent.def中去。
- 測(cè)試工程編譯:./build.sh --product-name Hi3516DV300 --ccache --build-target hisyseventTest。
測(cè)試
- 修改開發(fā)板的讀寫權(quán)限。
進(jìn)入終端:hdc_std.exe shell
修改權(quán)限:mount -o remount,rw /
添加test目錄:mkdir /data/test/
- 將編譯文件發(fā)送到開發(fā)板對(duì)應(yīng)目錄:
測(cè)試應(yīng)用:hdc_std.exe file send Z:\L2.31\out\hi3516dv300\myapp\hisysevent_test\hisyseventTest /data/test/
打點(diǎn)信息格式文件: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參數(shù)重新進(jìn)行全量編譯。
- 修改打點(diǎn)測(cè)試應(yīng)用的執(zhí)行權(quán)限。
切到對(duì)應(yīng)的目錄:cd /data/test/
修改成可執(zhí)行:chmod 0755 hisyseventTest
- 修改系統(tǒng)時(shí)間,便于查看打點(diǎn)消息。
修改系統(tǒng)時(shí)間搓: date 2022-06-21
同步硬件時(shí)鐘: hwclock -w
查詢時(shí)間: date
- 終端1:實(shí)時(shí)查看tag為HisysEvTest的打點(diǎn)消息。
hisysevent -r -t HisysEvTest
- 終端2:執(zhí)行測(cè)試打點(diǎn)的應(yīng)用。
/data/test/hisyseventTest
- 終端3:查看存儲(chǔ)的打點(diǎn)消息。
hisysevent -l
文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載: