HarmonyOS Next 日志工具介绍

news/2025/1/14 22:55:43/

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/news/1563154.html

相关文章

Django创建数据表、模型、ORM操作

1、创建项目 django-admin startproject PersonInfosProject 2、创建项目应用&#xff0c;进入PersonInfosProject文件夹&#xff0c;新建index应用&#xff0c;使用命令 cd PersonInfosProject python manage.py startapp 新建完成之后的目录结构 3、新建数据模型&#xf…

STM32 FreeRTOS 介绍

目录 什么是裸机开发 什么是操作系统 通用操作系统 实时操作系统 FreeRTOS简介 FreeRTOS发展历史 FreeRTOS优势 FreeRTOS特点 什么是裸机开发 裸机开发指的是在没有操作系统&#xff08;OS&#xff09;或者其他高级软件支持的情况下&#xff0c;直接在裸机硬件上进行软…

Bash语言的语法糖

Bash语言的语法糖 Bash&#xff08;Bourne Again SHell&#xff09;是一种常用的Unix Shell&#xff0c;它为用户提供了一种命令行界面&#xff0c;用于与操作系统进行交互。虽然在功能上&#xff0c;Bash允许进行复杂的脚本编写、文件操作与系统管理&#xff0c;但是对于初学…

Spring IoC DI

Spring IoC & DI 前置知识: 什么是容器? 容器: 装东西的装置.Spring就是包含了众多工具方法的IoC容器 1.1 Spring IoC & DI 概念 我们先来看这么一个例子: 我们现在的需求是造车: 先设计轮子,根据轮子大小设计底盘,根据底盘设计车身,根据车身设计整个车. 我们给一个指…

React Error Boundary 错误边界限制

1. 基本概念 1.1 什么是 Error Boundary Error Boundary 是 React 16 引入的一个特性&#xff0c;它可以捕获子组件树中的 JavaScript 错误&#xff0c;记录错误并展示备用 UI&#xff0c;而不是让整个应用崩溃。大白话&#xff1a;嵌套组件某个组件出错时显示备用页面而非报…

使用Selenium进行网页自动化测试

在使用Selenium进行网页自动化测试时&#xff0c;获取网络请求数据&#xff08;即network数据&#xff09;并不直接由Selenium库提供。Selenium主要用于与网页内容进行交互&#xff08;如点击、输入文本、获取页面元素等&#xff09;&#xff0c;但它本身不拦截或记录网络请求。…

贪心算法笔记

贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…

从前端视角看设计模式之创建型模式篇

设计模式简介 "设计模式"源于GOF&#xff08;四人帮&#xff09;合著出版的《设计模式&#xff1a;可复用的面向对象软件元素》&#xff0c;该书第一次完整科普了软件开发中设计模式的概念&#xff0c;他们提出的设计模式主要是基于以下的面向对象设计原则&#xff…