openharmony中hilog实证记录说明(3.1和5.0版本)

发布于:2025-03-21 ⋅ 阅读:(22) ⋅ 点赞:(0)

每次用这个工具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 trueparam 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 -shilog -w start -rhilog -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.

参考资料

hilog