Android单条日志太长导致被截断的问题分析和解决
9:20 AM
Wednesday, December 28, 2022 (GMT+8)
Time in Guangzhou, Guangdong Province, China
[toc]
背景
通常在Android中使用logcat
输出查阅日志,但有时日志很长,可能会被截断,显示不完整。
注意,这里指的是单条日志太长了被截断了,不是指日志太多了被冲掉了
本文研究日志被截断的原因,并给出修改方法。
首先日志被截断的原因有如下几种,其中第一种是首要原因:
- 单条日志长度上限,日志如果太长,触及上限则会被截断
- 日志如果涉及序列化、binder传输,则受到binder传输上限的限制
- 底层(Linux、log设备)限制、系统调用限制
注意,单条日志长度上限是指一次打印的日志的长度,不是指设置-开发者选项-日志缓冲区大小。
查看日志缓冲区大小、单条日志大小
1 | #:/ logcat -g |
通过logcat -g
指令可以读到各个分类的缓冲区上限、目前用量、每次读取量、单条日志长度的上限。
调节日志缓冲区大小
- 法1: 开发者模式-设置日志缓冲区大小
- 法2: 通过
logcat -G
即可设置,等同于法1
调节单条日志大小
修改代码根目录下的system/core/liblog/include/log/log_read.h
下的LOGGER_ENTRY_MAX_PAYLOAD
和LOGGER_ENTRY_MAX_LEN
。
修改后,需要重新编译如下三个模块: liblog logd logcat
,推入设备,重启方能生效。(通过logcat -g
可以验证修改)
不同Android版本在不同位置,比如这个。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 PeaceMaker!
评论
DisqusWaline