每次用这个工具hilog都有一些小用法记不清,需要花一些时间去查去分析使用方法,为了给丰富多彩的生活留出更多的时间,所以汇总整理共享来了,它来了它来了~~~~~~~~~
开始是想通过3.1来汇总的,但实际测试发现openharmony3.1和openharmony5.0的区别还是比较大的,所以中间又采用的5.0的版本,有使用3.1版本的可以查看最后的openharmony3.1版本的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 [选项]
二、功能说明
1. 显示帮助信息
-h
:显示所有帮助信息。query/clear/buffer/stats/persist/private/kmsg/flowcontrol/baselevel/domain/combo
:显示指定操作类型的帮助信息。
字段(操作类型) | 说明 |
---|---|
query | 查询 |
clear | 清除 |
buffer | 缓存buffer |
stats | 统计信息相关,可查询 |
persist | 存储相关的设置 |
private | HILOG API 的隐私格式化功能 |
kmsg | 是否读取内核日志 |
flowcontrol | 设置日志流控功能 |
baselevel | 设置可打印日志的等级,例如D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL) |
domain | 分类标识符,对日志或功能进行分类和管理 |
combo | 一些组合说明,例如开关的开和关不能同时组合啥的,常识类的东西。 |
2. 查询日志
2.1无选项
执行阻塞读取并持续打印日志。
- 命令
hilog
- 实证
读完之后会一直阻塞循环读取,类似linux中tail命令实现的效果。
2.2非阻塞读取
执行打印缓冲区中所有日志后退出
- 命令
hilog -x
- 实证
例如我清除日志后,重新读一下日志,会打印出当前的最新的日志,并会自动退出。
2.3显示缓冲区前 n 行日志
- 命令
hilog -a 10
- 实证
查询前三行的日志。
2.4显示缓冲区后 n 行日志
- 命令
hilog -z 10
- 实证
查询后三行的日志
2.5显示指定类型的日志
显示指定类型的日志。类型可以是:app/core/init/kmsg/only_prerelease,默认类型是:app,core,init,only_prerelease
类型 | 说明 |
---|---|
app | 用于应用程序的日志。这些日志通常由应用程序开发者编写,用于记录应用的运行状态、用户操作等 |
core | 用于系统核心模块的日志。这些日志记录系统的核心功能和底层操作 |
init | 用于系统初始化过程的日志。这些日志记录系统启动时的初始化操作 |
kmsg | 用于内核消息的日志。这些日志记录内核的运行状态和事件 |
only_prerelease | 仅在系统预发布版本(pre-release)中打印的日志。这些日志通常用于内部测试和调试,不适用于正式发布版本 |
- 命令
hilog -t app core
- 实证
2.6显示指定级别日志
显示指定级别,长级别字符串可以是:DEBUG/INFO/WARN/ERROR/FATAL,短级别字符串可以是:D/I/W/E/F,默认级别是所有级别。
- 命令
hilog -L D
- 实证
只显示对应级别的日志
日志级别说明
- D(DEBUG):调试信息,用于开发和测试阶段,记录详细的运行状态和变量值。
- I(INFO):普通信息,记录正常运行时的重要事件。
- W(WARN):警告信息,表示可能存在的问题,但不会影响系统的正常运行。
- E(ERROR):错误信息,表示系统运行中出现的错误,可能会影响功能的正常执行。
- F(FATAL):严重错误,表示系统运行中出现的致命错误,可能导致程序崩溃或无法继续运行。
2.7显示指定域
显示指定域(格式:domain1,domain2,domain3)或排除指定域(格式:^domain1,domain2,domain3)的日志。最大域数为 5
- 命令
hilog -D 02b00
- 实证
根据参考资料实际应该是日志中的02b00这个,但是我这个版本的hilog显示不出来,不清楚是我操作问题还是小bug,有码友了解的也麻烦告知一下🔐
2.8显示指定标签
显示指定标签(格式:tag1,tag2,tag3)或排除指定标签(格式:^tag1,tag2,tag3)的日志。最大标签数为 10。
指定显示命令
hilog -T DisplayPowerBrightness,wpa_supplicant
- 实证
指定排除标签显示命令
hilog -T ^DisplayPowerBrightness,wpa_supplicant
- 实证
2.9显示指定进程 ID
显示指定进程 ID(格式:pid1,pid2,pid3)或排除指定进程 ID(格式:^pid1,pid2,pid3)的日志。最大进程 ID 数为 5
指定显示命令
hilog -P 1221
- 实证
指定排除指定进程显示命令
hilog -P ^1221,254,530
- 实证
2.10匹配正则表达式
-e <expr>
:显示匹配正则表达式<expr>
的日志。
- 命令
hilog -e start
- 实证
2.11不同格式显示日志
-v <format>
:以不同格式显示日志
- 命令
hilog -v color/time/msec....
color
:按日志级别显示彩色日志。
time
:显示本地时间(默认)。
epoch
:显示从 1970/1/1 开始的时间。monotonic
:显示从启动开始的 CPU 时间。msec
:以毫秒显示时间(默认)。usec
:以微秒显示时间。nsec
:以纳秒显示时间。year
:当指定-v time
时显示年份。zone
:当指定-v time
时显示时区。wrap
:当日志行换行时无前缀显示日志。
3. 清除日志
3.1清除 hilogd 缓冲区中的所有日志
- 命令
hilog -r
- 实证
3.2清除缓冲区中指定类型
-t <type>
:清除缓冲区中指定类型(格式:type1,type2,type3)的日志。类型可以是:app/core/init/kmsg/only_prerelease,默认类型是:app,core,only_prerelease。
- 命令
hilog -r -t core
- 实证
4. 查询缓冲区大小
4.1查询 hilogd 缓冲区大小
- 命令
hilog -g
- 实证
4.2查询指定类型的缓冲区大小
-t <type>
:查询指定类型(格式:type1,type2,type3)的缓冲区大小。类型可以是:app/core/init/kmsg/only_prerelease,默认类型是:app,core,only_prerelease。
- 命令
hilog -g -t app
- 实证
5. 设置缓冲区大小
5.1设置 hilogd 缓冲区大小
- 命令
-G <size>
:设置 hilogd 缓冲区大小,<size>
可以是数字或带单位的数字。单位可以是:B/K/M/G,分别表示字节、千字节、兆字节、吉字节。<size>
范围:[64.0K, 512.0M]。
hilog -G 62M
- 实证
5.2设置 指令类型缓冲区大小
-t <type>
:设置指定类型(格式:type1,type2,type3)的日志缓冲区大小。类型可以是:app/core/init/kmsg/only_prerelease,默认类型是:app,core,only_prerelease。这是一个持久化配置。
- 命令
hilog -G 200M -t app
- 实证
6. 查询统计信息
-s
:查询日志统计信息。设置参数persist.sys.hilog.stats
为 true 可启用统计。设置参数persist.sys.hilog.stats.tag
为 true 可启用日志标签统计。
- 命令
hilog -s
- 实证
设置参数命令param set persist.sys.hilog.stats true
和param set persist.sys.hilog.stats.tag true
- 实证
💙注意设置完之后需要重启才能生效。。。。。。
7. 清除统计信息
清除 hilogd 统计信息
- 命令
hilog -S
- 实证
8. 日志持久化任务控制
-w <control>
:日志持久化任务控制,选项包括:
query
:查询任务信息。
stop
:停止所有任务。
start
:启动一个任务。
refresh
:将缓冲区内容刷新到文件。clear
:清除/data/log/hilog/hilog*.gz
高级选项:
-f <filename>
:设置日志文件名,名称应为 Linux 文件系统的有效名称。-l <length>
:设置单个日志文件大小。<length>
可以是数字或带单位的数字。单位可以是:B/K/M/G,分别表示字节、千字节、兆字节、吉字节。<length>
范围:[64.0K, 512.0M]。-n <number>
:设置最大日志文件数,当文件数超过此数量时进行日志文件轮转。<number>
范围:[2, 1000]。-m <compress algorithm>
:设置日志文件压缩算法,选项包括:none
:写入未压缩的日志文件。zlib
:写入 zlib 压缩的日志文件。
-j <jobid>
:启动或停止指定任务的<jobid>
。<jobid>
范围:[10, 0xffffffff)。用户可以使用选项(t/L/D/T/P/e/v)启动任务,就像在 “查询日志” 时使用它们一样。这是一个持久化配置。
例如开启kmsglog落盘任务,并且设置落盘规则,文件名为kmsglog,大小为2M,数量为100个, 其压缩方式为zlib压缩
hilog -w start -t kmsg -f kmsglog -l 2M -n 100 -m zlib
9. 设置日志隐私格式化功能
-p <on/off>
:设置 HILOG API 隐私格式化功能为开启或关闭。这是一个临时配置,重启后会丢失。
- 命令
hilog -p on
- 实证
10. 设置 hilogd 存储 kmsg 日志功能
-k <on/off>
:设置 hilogd 存储 kmsg 日志功能为开启或关闭。这是一个持久化配置。
- 命令
hilog -k off
- 实证
11. 设置日志流控制功能
-Q <control-type>
:设置日志流控制功能为开启或关闭,选项包括:
pidon
:进程流控制开启,当某个进程的日志输出过多时,系统会自动限制该进程的日志输出频率,以避免日志过多对系统性能造成影响。pidoff
:进程流控制关闭。当某个日志域的日志输出过多时,系统会自动限制该域的日志输出频率。日志域通常是按照功能模块或服务划分的,例如“网络模块”、“文件系统模块”等。domainon
:域流控制开启。domainoff
:域流控制关闭。
- 命令
hilog -Q pidoff
💙这是一个临时配置,重启后会丢失。
- 实证
12. 设置全局日志级别
-b <loglevel>
:设置全局日志级别为<loglevel>
。长级别字符串可以是:DEBUG/INFO/WARN/ERROR/FATAL/X,短级别字符串可以是:D/I/W/E/F/X。X 表示日志级别高于最大级别,不会打印任何日志。
从低到高通常分为 DEBUG、INFO、WARN、ERROR 和 FATAL。
- 命令
hilog -b E
💙这是一个临时配置,重启后会丢失。
- 实证
可以看到上面截图中还有I级别的日志,具体原因未知,但是后续的日志就只有E级别了。
此命令可以结合-D和-T参数来指定域和标签的日志级别。
-D <domain>
:设置指定域的日志级别。-T <tag>
:设置指定标签的日志级别。优先级为:标签级别 > 域级别 > 全局级别。命令
hilog -b E -D app
- 实证
13、注意事项
第一层选项不能组合使用,例如:hilog -S -s
;hilog -w start -r
;hilog -p on -k on -b D
。
openharmony3.1版本的hilog工具的帮助信息
hilog -h
Usage: [options]
options include:
No option default action: performs a blocking read and keeps printing.#1.无选项默认操作,执行阻塞读取并继续打印。
-h --help show this message.#2.显示帮助信息
-x --exit Performs a non-blocking read and exits immediately.#3.执行非阻塞读取并立即退出。
-g query hilogd buffer size, use -t to specify log type.#4.查询日志缓冲区大小,使用-t指定日志类型。
-p, --privacy set privacy formatter feature on or off.#5.设置打开或关闭格式化功能
on turn on
off turn off
-k store log type kmsg or not #6.存储日志类型是否为kmsg
on yes
off no
-s, --statistics query hilogd statistic information.#7.查询基本的统计信息
-S clear hilogd statistic information.#8.清楚基本的统计信息
-r remove the logs in hilog buffer, use -t to specify log type #9.删除hilog缓冲区中的日志,使用-t来指定日志类型
-Q <control-type> set log flow-control feature on or off.# 9.设置打开或关闭日志流控制功能
pidon process flow control on
pidoff process flow control off
domainon domain flow control on
domainoff domain flow contrl off
-L <level>, --level=<level> # 10.在特定的级别上输出日志
Outputs logs at a specific level.
-t <type>, --type=<type>
Reads <type> and prints logs of the specific type,#11.打印特定类型的日志
which is -t app (application logs) by default.#默认情况下是-t应用程序(应用程序日志)。
-D <domain>, --domain=<domain>
specify the domain, no more than 5.# 12.指定域,不超过5。
-T <tag>, --Tag=<tag>
specify the tag, no more than 10. # 13.指定标记
-a <n>, --head=<n> show n lines log on head. #14.显示前N行
-z <n>, --tail=<n> show n lines log on tail. #15.显示最后的N行
-G <size>, --buffer-size=<size>
set hilogd buffer size, use -t to specify log type.# 16设置日志记录缓冲区大小,使用-t指定日志类型。
-P <pid> specify pid, no more than 5. #16指定pid,不超过5。
-e <expr>, --regex=<expr> # 17.显示匹配正则表达式的日志
show the logs which match the regular expression,
<expr> is a regular expression.
-f <filename>, --filename=<filename>
set log file name.# 18.设置日志文件名称
-l <length>, --length=<length>
set single log file size.# 19.设置日志文件大小
-n <number>, --number<number>
set max log file numbers.# 19.设置最大日志文件数
-j <jobid>, --jobid<jobid>
start/stop the log file writing task of <jobid>.#20.启动/停止<jobid>的日志文件写入任务。
-w <control>,--write=<control>
query log file writing task query.# 21.日志文件写入任务查询
start start a log file writing task, see -F -l -n -c for to set more configs,
stop stop a log file writing task.
-m <compress algorithm>,--stream=<compress algorithm>#22.压缩算法
none log file without compressing
zlib compress log file by the zlib algorithm
zstd compress log file by the zstd algorithm
-v <format>, --format=<format> options:#23.设置显示格式
time display local time.
color display colorful logs by log level.i.e. VERBOSE
DEBUG INFO WARN ERROR FATAL
epoch display the time from 1970/1/1.
monotonic display the cpu time from bootup.
usec display time by usec.
nsec display time by nano sec.
year display the year.
zone display the time zone.
-b <loglevel>, --baselevel=<loglevel>
set loggable level. #24.设置可加载级别
Types, levels, domains, tags support exclusion query.
Exclusion query can be done with parameters starting with "^" and delimiter ",".
Example: "-t ^core,app" excludes logs with types core and app.
Could be used along with other parameters.