00. 目录
01. 概述
HiLog是OpenHarmony日志体系,提供给体系框架、服务、以及应用打印日志,记任命户操作、体系运行状态等。
本章节内容对标准体系类设备(参考内存≥128MiB)适用。
HiLog 架构
hilogd是流水日志的用户态服务。此功能是常驻服务,在体系启动时默认启动。当用户态模块调用日志接口时,hilogd将格式化好的日志内容传输给该任务,并将其存储在一个环形缓冲区中。
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进程流控开关关闭。domainondomain流控开关打开。domainoffdomain流控开关关闭。-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无压缩方式落盘。zlibzlib压缩算法落盘,落盘文件为.gz。zstdzstd压缩算法落盘,落盘文件为.zst。-v–formattime表现本地时间。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 truehilog –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重大致命异常,表明应用即将瓦解,故障无法规复。 11. 附录
hilog
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |