HarmonyOS Next 日志工具介绍

embedded/2025/1/12 20:22:12/

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进程流控开关关闭。
domainondomain流控开关打开。
domainoffdomain流控开关关闭。
-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无压缩方式落盘。
zlibzlib压缩算法落盘,落盘文件为.gz。
zstdzstd压缩算法落盘,落盘文件为.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

总结

使用 hilog 和 hilogtool 可以帮助开发者更好地理解和调试应用程序,尤其是在遇到问题时,它们提供了一个查看过去事件和错误的方式。然而,由于这些工具和系统是特定于 Huawei 的 HarmonyOS 平台,因此可能不适用于其他操作系统或平台。
如果你正在使用 HarmonyOS 开发应用程序,并且需要记录和分析日志信息,了解 hilog 和 hilogtool 将非常有帮助。如果你在其他平台上工作,你可能需要寻找类似的工具和方法来管理你的日志。


http://www.ppmy.cn/embedded/153376.html

相关文章

Kafka 会丢消息吗?

目录 01 生产者(Producer) 02 消息代理(Broker) 03 消费者(Consumer) 来源:Kafka 会丢消息吗? Kafka 会丢失信息吗? 许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别会导致消息的丢失。我们需要了解它如何以及何时…

第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基础设施耐久性国际学术会议(CADPC DuraBI 2025)

第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基础设施耐久性国际学术会议&#xff08;CADPC & DuraBI 2025&#xff09;将于2025年2月28日-3月2日在青岛举办。会议将以“建筑技术”、“灾害预测”、“灾害防控”、“灾后重建”等主题展开学术研讨&#xff…

Euler 21.10(华为欧拉)安装oracle19c-RAC

1. Euler 21.10安装oracle19c-RAC 1.1. 环境规划 1.1.1. 主机规划 hostname IP 实例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系统版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

w~深度学习~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12998003 #FlashAttention FlashAttention新升级&#xff01;斯坦福博士一人重写算法&#xff0c;第二代实现了最高9倍速提升。Transformer上下文长度史诗级提升 继超快且省内存的注意力算法FlashAttention爆火后&#xf…

RS-232串口和普通串口介绍

RS-232串口和普通串口的区别主要体现在标准和信号电平的不同,虽然“串口”通常指的是基于串行通信的接口,但不同的串口标准在硬件实现和使用场景上有些不同。 RS-232串口 vs 普通串口的区别 RS-232 是一种具体的串行通信协议标准,而“普通串口”这个词通常是指没有明确标准定…

C语言gdb调试

目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…

服务器与机顶盒

在PCDN&#xff08;P2PCDN&#xff0c;即点对点内容分发网络&#xff09;中&#xff0c;服务器相比盒子具有更高的风险&#xff0c;这主要是由于它们在性能、资源利用、应用场景以及运营方式上的差异所导致的。以下是对这一问题的详细分析&#xff1a; 一、性能与资源利用差异…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…