每次用這個工具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 onoff turn off-k store log type kmsg or not #6.存儲日志類型是否為kmsgon yesoff 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 onpidoff process flow control offdomainon domain flow control ondomainoff 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 compressingzlib compress log file by the zlib algorithmzstd 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. VERBOSEDEBUG INFO WARN ERROR FATALepoch 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