00. 目录
文章目录
01. 概述
HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。
本章节内容对标准系统类设备(参考内存≥128MiB)适用。
HiLog 架构
- hilogd
hilogd是流水日志的用户态服务。此功能是常驻服务,在系统启动时默认启动。当用户态模块调用日志接口时,hilogd将格式化好的日志内容传输给该任务,并将其存储在一个环形缓冲区中。
- hilog
hilog是日志查看命令行工具。hilog工具支持将日志输出到控制台(console)进行查看,同时也支持给hilogd发送命令将日志落盘。
02. 命令行说明
前置条件
- 根据hdc命令行工具指导,完成环境准备。
- 正常连接设备。
hilog命令行使用方式:
短选项 | 长选项 | 参数 | 说明 |
---|---|---|---|
-h | –help | 帮助命令。 | |
缺省 | 缺省 | 阻塞读日志,不退出。 | |
-x | –exit | 非阻塞读日志,读完退出。 | |
-g | 查询buffer的大小,配合-t指定某一类型使用,默认app和core。 | ||
-G | –buffer-size | 设置指定日志类型缓冲区的大小,配合-t指定某一类型使用,默认app和core, 可使用B/K/M/G为单位。 | |
-r | 清除buffer日志,配合-t指定某一类型使用,默认app和core。 | ||
-p | –privacy | <on/off> | 支持系统调试时日志隐私开关控制。 |
on | 打开隐私开关,显示。 | ||
off | 关闭隐私开关,显示明文。 | ||
-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。 | |
-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 | 落盘任务停止。 | ||
-m | –stream | 落盘方式控制。 | |
none | 无压缩方式落盘。 | ||
zlib | zlib压缩算法落盘,落盘文件为.gz。 | ||
zstd | zstd压缩算法落盘,落盘文件为.zst。 | ||
-v | –format | ||
time | 显示本地时间。 | ||
color | 显示不同级别显示不同颜色,参数缺省级别颜色模式处理(按黑白方式)。 | ||
epoch | 显示相对1970时间。 | ||
monotonic | 显示相对启动时间。 | ||
usec | 显示微秒精度时间。 | ||
nsec | 显示纳秒精度时间。 | ||
year | 显示将年份添加到显示的时间。 | ||
zone | 显示将本地时区添加到显示的时间。 | ||
-b | –baselevel | 设置可打印日志的最低等级:D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL)。 |
查询相关命令
短选项 | 长选项 | 说明 |
---|---|---|
-h | –help | 打印hilog的命令帮助信息。 |
时间相关命令
短选项 | 长选项 | 参数 | 说明 |
---|---|---|---|
-v | –format | 时间显示格式。 |
参数:
参数名 | 说明 |
---|---|
time | 显示本地时间。 |
color | 显示不同级别显示不同颜色,参数缺省级别颜色模式处理(按黑白方式)。 |
epoch | 显示相对1970时间。 |
monotonic | 显示相对启动时间。 |
usec | 显示微秒精度时间。 |
nsec | 显示纳秒精度时间。 |
year | 显示将年份添加到显示的时间。 |
zone | 显示将本地时区添加到显示的时间。 |
03. 日志查询
命令说明
日志查询命令
命令 | 功能说明 |
---|---|
hilog -t <app|core|kmsg|init> | 查询指定类型的日志。l app:应用日志l core:基础框架日志l kmsg:内核日志l init:系统初始化日志 |
hilog –L <D/I/W/E/F(DEBUG/INFO/WARN/ERROR/FATAL)> | 查询指定级别的日志。日志级别的说明,参见“日志级别”。 |
hilog –D <0xD0xxxyy/0xD0xxx> | 查询指定业务领域的日志,多个参数用逗号隔开。 |
hilog –T | 查询指定tag的日志,多个参数用逗号隔开。 |
hilog –P | 查询指定进程ID的日志,多个参数用逗号隔开。 |
hilog –e | 查询符合指定正则表达式的日志。 |
hilog –v | 查询日志并指定显示格式。包含以下格式选项:l [color|colour]:按日志级别显示不同颜色的日志l [time]:显示本地时间l [epoch]:显示相对1970年1月1日的时间l [monotonic]:显示相对系统启动的时间l [usec]:表示微秒l [nsec]:表示纳秒l [year]:表示显示年份l [zone]:表示显示时区不同选项可以联合使用,例如:hilog -v color -v time -v nsec -v year -v zone说明:以上选项中,[time]、[epoch]和[monotonic]三选一,[usec]和[nsec]二选一。 |
示例:
# hilog -v color -v time -v nsec -v year -v zone
04. 日志缓存
命令说明
日志缓存命令
命令 | 功能说明 |
---|---|
hilog –g [–t app|core|init|kmsg] | 查询缓存大小。可以配合-t使用,查询指定类型的日志缓存大小。不带-t,则默认为查询app和core两种类型的日志缓存大小。 |
hilog –G xxx [–t app|core|init|kmsg] | 设置缓存大小。可使用B/K/M/G为单位,设置范围为[64K, 512M]。可以配合-t使用,设置指定类型的日志缓存大小。不带-t,则默认为设置app和core类型的日志缓存大小。 |
hilog –r [–t app|core|init|kmsg] | 清除缓存日志。可以配合-t使用,清除指定类型的缓存日志。不带-t,则默认为清除app和core类型的日志缓存。 |
示例:
# hilog -g -t core
core buffer size is 256K
# hilog -G 5M -t core
core buffer size is 5M
# hilog -g -t core
core buffer size is 5M
05. 日志落盘
命令说明
日志落盘命令
命令 | 功能说明 |
---|---|
hilog –w start | 启动落盘。此命令后面可以携带以下选项:l [-f “xxx”]:重命名落盘文件,文件名不能重复。不带此选项,则默认落盘文件名为“hilog”或“hilog_kmsg”。(app、core和init类型的日志文件名为“hilog”,kmsg类型的日志文件名为“hilog_kmsg”。)l [-l xxx]:指定单个落盘文件的长度,可使用K/M/G为单位,取值范围为[64K, 512M]。不带此选项,则单个落盘文件的长度默认为4M。l [-n xxx]:指定一次落盘的日志文件个数。文件个数的取值范围为[2, 1000]。不带此选项,则默认文件个数为10。l [-m none/zlib/zstd]:指定压缩算法。不带此选项,则默认采用zlib压缩。l [-j xxx]:指定落盘任务的ID。ID的取值范围为[10, 0x7FFFFFFF),不能重复。不带此选项,则默认app、core和init日志落盘任务ID为1,kmsg日志落盘任务ID为2。l [-t xxx]:指定落盘的日志类型。不带此选项,则默认为app和core类型。此命令还可以配合选项-L/-D/-T/-P/-e/-v使用,使用方法参见表2-1。说明:kmsg类型是独立的,不能和app、core、init同时落盘。落盘路径为/data/log/hilog。 |
hilog –w query | 查询落盘。此命令后面可以携带以下选项:l [-j xxx]:指定查询的落盘任务ID。l [-t xxx]:指定查询的落盘日志类型。(查询kmsg类型日志的落盘,只能通过该方式。)不带以上选项,则默认查询app和core类型日志的落盘。 |
hilog –w stop | 停止落盘。此命令后面可以携带以下选项:l [-j xxx]:指定要停止落盘的任务ID。不带此选项,则默认停止所有落盘任务。 |
示例:
# hilog -w start -j 10 -f mylog -l 10M -n 100 -t core //开启core类型日志的落盘
Persist task [jobid:10] started successfully
# hilog -w query
10 core zlib /data/log/hilog/mylog 10.0M 100
# cd /data/log/hilog/
# ls
mylog.000.19700101-000640.gz
#hilog -w start -j 10 -f mklog -l 10M -n 100 -t kmsg -m none //开启kmsg类型日志的落盘
Persist task [jobid:11] started successfully
# hilog -w query -t kmsg
11 kmsg none /data/log/hilog/mklog 10.0M 100
# ls
mklog.000.19700101-000752 mylog.000.19700101-000640.gz
06. 日志流控
6.1 日志流控总开关
命令说明
日志流控总开关
命令 | 功能说明 |
---|---|
hilog -Q | 打开或关闭日志流量控制功能,包含进程流控和域流控。l <pidon/pidoff>:进程流控打开或关闭,重启失效。为了不影响开机日志,默认在系统启动五分钟后打开进程流控。l <domainon/domainoff>:域流控打开或关闭,重启失效。默认关闭域流控。打开流控后,默认额度为10KB/s。 |
示例
# hilog -Q pidon
Set flow control by process to enabled, result: Success [CODE: 0]
# hilog -T LOGLIMIT
01-01 00:58:32.058 451 451 W 02500/LOGLIMIT: ==LOGS OVER PROC QUOTA, 92 DROPPED==
01-01 00:58:37.060 451 451 W 02500/LOGLIMIT: ==LOGS OVER PROC QUOTA, 2 DROPPED==
01-01 00:58:42.058 451 451 W 02500/LOGLIMIT: ==LOGS OVER PROC QUOTA, 92 DROPPED==
……
# hilog -Q pidoff
Set flow control by process to disabled, result: Success [CODE: 0]
6.2 某一进程流控开关
当进程流控总开关打开时,默认所有的进程流控都打开。可以通过手动执行命令打开或关闭某一进程流控。
命令说明
某一进程流控开关
命令 | 功能说明 |
---|---|
param set hilog.quota.proc.close.进程名 true说明:可以通过ps -ef命令查看进程名。 | 关闭某一进程流控,重启失效。 |
param set hilog.quota.proc.close.进程名 false | 打开某一进程流控,重启失效。 |
命令示例
通过ps -ef命令查看进程名。
执行以下命令关闭khmonitorservic进程流控。
param set hilog.quota.proc.close.khmonitorservic true
6.3 设置某一进程流控配额
打开进程流控总开关后,默认限额为10KB/s。HiLog限流机制以每秒为周期做一次限流,可以通过手动执行命令调整某一进程的流控配额。
命令说明
设置某一进程流控配额
命令 | 功能说明 |
---|---|
param set hilog.quota.proc.进程名 配额说明:可以通过ps -ef命令查看进程名。 | 为某一进程设置流控配额,重启失效。配额的单位为字节。 |
示例
设置khmonitorservic进程流控配额为20KB,命令如下:
param set hilog.quota.proc.khmonitorservic 20480
6.4 查看日志限流
打开日志流控后,可以通过命令查看日志限流情况。
命令说明
查看日志限流
命令 | 功能说明 |
---|---|
hilog | grep “LOGS OVER PROC QUOTA” | 查看日志限流情况。 |
命令示例
比如播放一段视频时,查看到日志限流情况如下:
07. 日志隐私格式化
日志隐私格式化命令
命令 | 功能说明 |
---|---|
hilog –p <on/off> | 打开或关闭日志隐私格式化开关。此开关默认是开启的。关闭日志隐私格式化开关是一个临时配置,重启失效。 |
命令示例
# hilog -p off
hilog private formatter is disabled
# hilog -p on
hilog private formatter is enabled
打开日志隐私格式化开关后,日志中的隐私信息会被替换为,如图所示。
08. 设置日志打印级别
命令说明
日志打印级别命令
命令 | 功能说明 |
---|---|
hilog -b | 设置可打印日志的最低级别。表示日志级别,支持长字符串或短字符串,取值如下:<DEBUG/INFO/WARN/ERROR/FATAL>|<D/I/W/E/F>日志级别的说明,参见“3.1 日志级别”。此设置为临时配置,重启失效。默认可打印日志的最低级别为DEBUG。 |
示例
# hilog -b E
global log level is set to E
09. 日志统计
命令说明
日志统计命令
命令 | 功能说明 |
---|---|
hilog –s | 查询统计信息,需配合–t或–D使用。执行此命令前,需要打开如下开关:param set persist.sys.hilog.stats trueparam set persist.sys.hilog.stats.tag true |
hilog –S | 清除统计信息,需配合–t或–D使用。 |
示例
# param set persist.sys.hilog.stats true
Set parameter persist.sys.hilog.stats true success
# param set persist.sys.hilog.stats.tag true
Set parameter persist.sys.hilog.stats.tag true success
# hilog -s -t app
app print log length is 367K
app cache log length is 54K
app dropped log lines is 0B
# hilog -S -t app
app statistic info clear success
10. 日志级别
日志级别
日志级别由低到高依次为:DEBUG、INFO、WARN、ERROR和FATAL,具体说明如表3-1所示。
日志级别
级别 | 说明 |
---|---|
DEBUG | 详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。 |
INFO | 用于记录业务关键流程节点,可以还原业务的主要运行过程;用于记录可预料的非正常情况信息,如无网络信号、登录失败等。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。 |
WARN | 用于记录较为严重的非预期情况,但是对用户影响不大,应用可以自动恢复或通过简单的操作就可以恢复的问题。 |
ERROR | 应用发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。 |
FATAL | 重大致命异常,表明应用即将崩溃,故障无法恢复。 |