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

1 回复

更多关于HarmonyOS鸿蒙Next中基于hilog日志使用相关问题指导的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,hilog是系统提供的日志工具,用于记录和调试应用运行时的信息。使用hilog时,首先需在代码中引入hilog模块,然后通过HiLogLabel定义日志标签,包括模块名、日志级别等。常用日志级别有DEBUGINFOWARNERROR等。通过HiLog::debugHiLog::info等方法输出日志。建议合理使用日志级别,避免过多日志影响性能,同时确保日志信息清晰、简洁,便于问题排查。

回到顶部