HarmonyOS Next 日志工具介绍

HarmonyOS Next 日志工具介绍

在HarmonyOS Next开发中,日志是我们调试定位问题的主要手段,不管是hilog还是console,最终都可以输出到DevEco Studio的日志模块中:

在这里可以过滤应用进程、日志级别、日志内容呢,也可以便捷的搜索。但是在一些场景,日志较多,刷新较快时,我们希望日志可以输出到文件,在Android中提供了logcat命令工具帮助我们将日志输出到控制台或者文件,HarmonyOS Next也提供了类似的工具hilog。

hilog工具介绍

HiLog日志系统,提供给系统框架、服务、以及应用,用于打印日志,记录用户操作、系统运行状态等。开发者可以通过hilog命令行查询相关日志信息。

当我们安装DevEco Studio IDE或者安装HarmonyOS SDK后,将hdc命令工具配置到环境变量后就可以直接使用hdc命令进入手机的shell中:

复制代码
hdc shell

进入shell后就可以开始执行hilog命令了:

我们发现日志刷的特别快,还不如DevEco Studio中的日志工具,怎么办?给hilog加参数。

hilog命令参数说明:

短选项 长选项 参数 说明
-h --help 帮助命令。
缺省 缺省 阻塞读日志,不退出。
-x --exit 非阻塞读日志,读完退出。
-g 查询buffer的大小,配合-t指定某一类型使用,默认app和core。
-G --buffer-size 设置指定日志类型缓冲区的大小,配合-t指定某一类型使用,默认app和core, 可使用B/K/M为单位,范围为64K-16M。
-r 清除buffer日志,配合-t指定某一类型使用,默认app和core。
-k <on/off> Kernel日志读取开关控制。
on 打开读取kernel日志。
off 关闭读取kernel日志。
-s --statistics 查询统计信息,需配合-t或-D使用。
-S 清除统计信息,需配合-t或-D使用。
-Q 流控缺省配额开关控制。
pidon 进程流控开关打开。
pidoff 进程流控开关关闭。
domainon domain流控开关打开。
domainoff domain流控开关关闭。
-L --level 指定级别的日志,示例:-L D/I/W/E/F。
-t --type 指定类型的日志,示例:-t app/core/init/only_prerelease。app为应用日志,core为系统日志,init为启动日志,only_prerelease为仅在系统release版本前打印的日志,应用开发者无需关注。
-D --domain 指定domain。
-T --tag 指定tag。
-a --head 只显示前行日志。
-z --tail 只显示后行日志。
-P --pid 标识不同的pid。
-e --regex 只打印日志消息与匹配的行,其中是一个正则表达式。
-f --filename 设置落盘的文件名。
-l --length 设置落盘的文件大小,需要大于等于64K。
-n --number 设置落盘文件的个数。
-j --jobid 设置落盘任务的ID。
-w --write 落盘任务控制。
query 落盘任务查询。
start 落盘任务开始,命令行参数为文件名、单文件大小、落盘算法、rotate文件数目。
stop 落盘任务停止。
refresh 刷新缓冲区的日志到落盘文件。
clear 删除已经落盘的日志文件。
-m --stream 落盘方式控制。
none 无压缩方式落盘。
zlib zlib压缩算法落盘,落盘文件为.gz。
zstd zstd压缩算法落盘,落盘文件为.zst。
-v --format
time 显示本地时间。
color 显示不同级别显示不同颜色,参数缺省级别颜色模式处理(按黑白方式)。
epoch 显示相对1970时间。
monotonic 显示相对启动时间。
usec 显示微秒精度时间。
nsec 显示纳秒精度时间。
year 显示将年份添加到显示的时间。
zone 显示将本地时区添加到显示的时间。
wrap 日志换行显示时,新行不增加时间戳等前缀。
-b --baselevel 设置可打印日志的最低等级:D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL)。

参数配置实践

清除缓冲区日志

一般日志都有缓存区,我们在开始启动应用准备观察日志时为了屏蔽之前的日志缓存干扰,可以执行清除缓存命令:

复制代码
$ hilog -r
Log type core,app,only_prerelease buffer clear successfully
内核日志读取开关控制

在应用调试时一般不需要内核日志,可以通过hilog -k on/off开启或关闭内核日志:

复制代码
$ hilog -k on
Set hilogd storing kmsg log on successfully
$ 
$ hilog -k off
Set hilogd storing kmsg log off successfully
查看指定级别日志
复制代码
hilog -L D/I/W/E/F
查看指定类型日志
复制代码
hilog -t app
查看指定domain日志
复制代码
hilog -D 01B06
查看指定TAG日志
复制代码
hilog -T tag
查看指定进程日志
复制代码
hilog -P pid
查看符合正则匹配关键字的日志
复制代码
hilog -e start
查看、设置落盘任务
复制代码
hilog -w control
  • 查询当前任务: hilog -w query
  • 开启hilog落盘任务,并且设置落盘文件数量为1000个: hilog -w start -n 1000
  • 开启kmsglog落盘任务,并且设置落盘文件数量为100个: hilog -w start -n 100 -t kmsg
  • 停止当前落盘任务: hilog -w stop
  • 开启kmsglog落盘任务,并且设置落盘规则,其中压缩方式可以为zlib,zstd,none。以设置规则为例:文件名为kmsglog,大小为2M,数量为100个, 其压缩方式为zlib压缩,命令行为: hilog -w start -t kmsg -f kmsglog -l 2M -n 100 -m zlib

示例:

复制代码
$ hilog -w query
Persist task query failed
No running persistent task [CODE: -63]
$
$ hilog -w start -n 1000
Persist task [jobid:1][fileNum:1000][fileSize:4194304] start successfully
$
$ hilog -w start -n 100 -t kmsg
Persist task [jobid:2][fileNum:100][fileSize:4194304] start successfully
$
$ hilog -w stop
Persist task [jobid:1] stop successfully
Persist task [jobid:2] stop successfully
$
$ hilog -w start -t kmsg -f kmsglog -l 2M -n 100 -m zlib
Persist task [jobid:2][fileNum:100][fileSize:2097152] start successfully
设置日志显示格式
复制代码
hilog -v time/color/epoch/monotonic/usec/nsec/year/zone/wrap

这个格式设置对于我们控制台查看日志还是很方便的。

设置可打印日志的最低等级
复制代码
hilog -b D/I/W/E/F

有时候明明打印了日志,但是看不到,可能就是因为设置了这个。

hilogtool工具介绍

目前hilog日志为编码后二进制形式保存的gz格式文件,开发者从设备/data/log/hilog路径下导出后无法直接解压查看,需要使用hilogtool工具进行解析,将转换为明文hilog日志。

hilogtool工具位于SDK的hms/toolchains目录下,使用方法如下:

  • hilogtool parse -i xxx -o xxx -d xxx
  • hilogtool parse ---input xxx ---output xxx --dict xxx

解析命令参数列表:

选项 描述 举例
-i/---input inputDir 用于指定输入路径,会扫描该目录下所有的hilog流水日志文件并进行解析; 缺省时,为命令行当前所在路径; 解析指定目录(D:\temp\hilog)下的所有hilog文件: hilogtool parse -i D:\temp\hilog 解析当前目录下的所有hilog文件: hilogtool parse -i .|
-i/---input inputFile 解析指定的单个hilog文件 解析指定的hilog文件: hilogtool parse -i D:\temp\data\log\hilog.706.20230711-071816.gz hilogtool parse -i .\hilog.706.20230711-071816.gz
-o/---output outputDir 用于指定输出路径,即解析后的日志文件保存路径; 缺省时,为解析的hilog原日志文件所在路径; 解析当前目录下的日志文件到D:\temp目录: hilogtool parse -i .\ -o D:\temp
-d/--dict dictFile 用于指定数据字典的路径; 缺省时,会在命令行当前所在路径下匹配最新的数据字典文件(格式:hilog_dict.20230908-142200.zip) 解析指定目录(D:\temp\hilog)下的所有hilog文件,并且指定使用该目录下的数据字典: hilogtool parse -i D:\temp\hilog -d D:\temp\hilog\hilog_dict.20230908-142200.zip

数据字典文件在data/log/hilog目录下,格式为:hilog_dict.2024xxxx-xxxxxx.zip,是设备启动时自动生成的,在解析日志时需要这个文件。

若缺少数据字典,会导致部分日志解析失败;重启设备可以重新生成该数据字典。

参考链接

总结

使用 hilog 和 hilogtool 可以帮助开发者更好地理解和调试应用程序,尤其是在遇到问题时,它们提供了一个查看过去事件和错误的方式。然而,由于这些工具和系统是特定于 Huawei 的 HarmonyOS 平台,因此可能不适用于其他操作系统或平台。

如果你正在使用 HarmonyOS 开发应用程序,并且需要记录和分析日志信息,了解 hilog 和 hilogtool 将非常有帮助。如果你在其他平台上工作,你可能需要寻找类似的工具和方法来管理你的日志。

相关推荐
Python猫2 小时前
付费专栏·Python潮流周刊电子书合集(epub、pdf、markdown)下载
python·计算机·pdf·电子书·资料
晚秋大魔王3 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
JackieZhengChina4 小时前
用python清除PDF文件中的水印(Adobe Acrobat 无法删除)
pdf
python算法(魔法师版)6 小时前
.NET 在鸿蒙系统上的适配现状
华为od·华为·华为云·.net·wpf·harmonyos
bestadc8 小时前
鸿蒙 UIAbility组件与UI的数据同步和窗口关闭
harmonyos
geovindu8 小时前
vue3: pdf.js 3.4.120 using javascript
开发语言·javascript·vue.js·pdf
枫叶丹49 小时前
【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
华为·harmonyos·deveco studio·harmonyos next
ax一号街阿楠10 小时前
华为FAT AP配置 真机
网络·华为·智能路由器
吗喽对你问好11 小时前
华为5.7机考第一题充电桩问题Java代码实现
java·华为·排序
乱世刀疤13 小时前
深度 |国产操作系统“破茧而出”:鸿蒙电脑填补自主生态空白
华为·harmonyos