HarmonyOS鸿蒙Next中基于hilog日志使用相关问题指导
HarmonyOS鸿蒙Next中基于hilog日志使用相关问题指导
背景
在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等),特别是出现故障时需要使用落盘hilog日志来进行问题分析。
一、Hilog落盘日志获取
1、日志落盘介绍:
规格介绍:
默认hilog落盘数量是1000个,kmsg是100个,大小都是4M一个。 日志落盘时,日志ID从0开始,日志数量超过1000个时,ID回绕到0继续记录。
查询当前落盘任务:hilog -w query
- 无落盘任务:
- 存在hilog日志落盘任务,路径是/data/log/hilog 文件名是hilog,单个文件大小是4M,文件数量最多保存10个:
关闭日志落盘任务:hilog -w stop
开启日志落盘任务:hilog -w start -n 1000
开启hilog落盘服务,并且设置落盘文件为1000个,kmsg落盘文件为100个:
增加落盘数量
临时调试可以用命令修改(重启后失效):
hdc shell hilog -w stop // 停止当前日志落盘任务
hdc shell hilog -w start -t kmsg -n 1000 // 重启kmsg log落盘任务, - n 后面的参数为日志文件数量
hdc shell hilog -w start -n 1000 // 重启hilog 落盘任务, - n 后面的参数为日志文件数量
2、日志获取方式
-
使用IDE自带Device File Browser工具获取hilog日志: 连接设备,打开工具,打开/data/log/hilog目录就可以看到hilog日志,可以根据日志文件名查找相应时间的日志,hilog.开头的是hilog日志,hilog_kmsg.开头的是底软日志。
-
使用命令获取全量日志: 使用hdc file recv命令获取hilog日志文件到本地目录。 命令:hdc file recv /data/log/hilog/ localDir。 备注:不使用localDir指定导出目录时,默认导出到当前目录。
-
使用脚本按匹配事件获取日志: 使用上述命令会将设备端hilog目录所有文件都拉到本地,如果日志多这里获取的日志就会比较大。因此可以通过编写脚本获取自己匹配需要时间段内的日志,根据系统可以将下面bat/shell 源码保存为脚本执行:(注意系统需要配置hdc到环境变量)
a. windows系统 bat脚本参考如下:
@rem 获取相应时间hilog日志,hilog日志文件名格式:hilog.034.20240520-160605.gz
@rem 输入 targetDate 可以根据要获取的时间自己修改,匹配是根据文件名字符串匹配
@echo off
@set targetDate=20240520-16
@echo start get hilog, time matching: %targetDate%
@set Dir=HILOG_%targetDate%
md %Dir%
@echo hilog downloading...
@for /f "tokens=*" %%i in ('hdc shell ls /data/log/hilog') do (
echo %%i | findstr %targetDate% >nul && (
echo download %%i
hdc file recv /data/log/hilog/%%i .\%Dir%\
)
echo %%i | findstr hilog_dict >nul && (
echo download %%i
hdc file recv /data/log/hilog/%%i .\%Dir%\
)
)
echo download hilog Done!
@pause
b. Mac系统shell脚本参考如下:
# 获取相应时间hilog日志,hilog日志文件名格式:hilog.034.20240520-160605.gz
# 输入 targetDate 可以根据要获取的时间自己修改,匹配是根据文件名字符串匹配
targetDate=20240520-16
echo start get hilog, time matching: $targetDate
Dir=HILOG_$targetDate
mkdir $Dir
for var in $(hdc shell 'ls /data/log/hilog/')
do
if [[ $var =~ $targetDate ]]
then
echo download $var
echo $(hdc file recv //data//log//hilog//$var ./$Dir)
fi
if [[ $var =~ 'hilog_dict' ]]
then
echo download $var
echo $(hdc file recv //data//log//hilog//$var ./$Dir)
fi
done
echo "download hilog Done!"
echo "Press Enter to continue..."
read -n 1
3、加密日志的解析
为了著降低端测维测资源开销,提升研发和商用版本问题解决率,当前落盘的hilog日志为编码后二进制形式保存的gz格式文件,开发者从设备/data/log/hilog路径下导出后无法直接解压查看,需要使用hilogtool工具进行解析,将转换为明文hilog日志。
a. 工具获取
下载HarmonyOS SDK(开源、闭源合一包),取对应平台/sdk/hms/toolchains目录下的hilogtool.exe,下面以windows平台为例:
b. 环境配置
c. 命令解析
命令:hilogtool parse -i xxx -o xxx -d xxx 解析命令参数列表:
选项 | 描述 | 举例 |
---|---|---|
-i/–input | 用于指定输入路径,会扫描该目录下所有的hilog流水日志文件并进行解析;缺省时,为命令行当前所在路径; | 解析指定目录(D:\temp\hilog)下的所有hilog文件:hilogtool parse -i D:\temp\hilog 解析当前目录下的所有hilog文件:hilogtool parse -i .\ |
-o/–output | 用于指定输出路径,即解析后的日志文件保存路径;缺省时,为解析的hilog原日志文件所在路径; | 解析当前目录下的日志文件到D:\temp目录:hilogtool parse -i .\ -o D:\temp |
-d/–dict dict | 用于指定数据字典的路径;缺省时,会在命令行当前所在路径下匹配最新的数据字典文件(格式:hilog_dict.20230908-142200.zip) | 解析指定目录(D:\temp\hilog)下的所有hilog文件,并且指定使用该目录下的数据字典:hilogtool parse -i D:\temp\hilog -d D:\temp\hilog\hilog_dict.20230908-142200.zip |
d. 落盘日志的清除命令解析
- 删除缓存区的日志:hilog -r。
- 删除已经落盘的data/log/hilog文件:hilog -w clear。
- 不要用rm –rf /data/log/hilog/删除整个hilog文件,这会使数据字典文件也同时被删除。可以用rm /data/log/hilog/*.gz命令删除。
更多关于HarmonyOS鸿蒙Next中基于hilog日志使用相关问题指导的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中基于hilog日志使用相关问题指导的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,hilog是系统提供的日志工具,用于记录和调试应用运行时的信息。使用hilog时,首先需在代码中引入hilog
模块,然后通过HiLogLabel
定义日志标签,包括模块名、日志级别等。常用日志级别有DEBUG
、INFO
、WARN
、ERROR
等。通过HiLog::debug
、HiLog::info
等方法输出日志。建议合理使用日志级别,避免过多日志影响性能,同时确保日志信息清晰、简洁,便于问题排查。