问题现象
场景一:使用hilog命令查看日志时,发现某些日志没有输出,或者日志时有时无。
场景二:在代码中使用了hilog.debug()但控制台看不到DEBUG日志。
场景三:命令行中显示的中文日志出现乱码。
场景四:只想查看某个应用的日志,但日志中混杂了其他应用的信息。
[h2]场景一
- 当前全局日志级别设置过高,低于该级别的日志不会被打印。
使用hilog -b D命令开启DEBUG级别日志显示。
hdc shell hilog -b D
或者按需设置其他级别。
hdc shell hilog -b I # 只显示INFO及以上级别
hdc shell hilog -b W # 只显示WARN及以上级别
- 日志打印量过大,触发了系统的流控机制。
查看流控警告:在日志中搜索关键字LOGLIMIT、Slow reader missed、write socket failed。
临时关闭流控(重启后失效)。
# 关闭进程级流控
hdc shell hilog -Q pidoff
# 关闭domain级流控
hdc shell hilog -Q domainoff
增大缓冲区:默认hilog buffer大小为256K,可增大到最大16M。
hdc shell hilog -G 16M
减少日志量:关闭不必要的DEBUG日志,或只开启特定domain的日志。
# 只显示指定domain的INFO级别日志
hdc shell hilog -b I -D d003200
[h2]场景二
- 开启DEBUG开关。
hdc shell hilog -b D
- 检查代码中的日志级别:确保调用hilog.isLoggable()检查日志是否可打印。
- 确认应用版本:DEBUG级别日志在release版本中默认不打印,需要在调试版本或开启调试开关。
[h2]场景三
保存为.bat文件,每次通过该脚本启动命令行。
[h2]场景四
- 按进程名过滤。
# 查看指定进程名的日志
hdc shell hilog | grep "com.example.myapp"
- 按domain过滤:如果知道应用的domain ID。
hdc shell hilog -D 03200
- 按tag过滤。
hdc shell hilog -T "MyTag"
- 组合过滤。
# 查看指定domain的ERROR级别日志
hdc shell hilog -L E -D 03200