Android单条日志太长导致被截断的问题分析和解决

背景

通常在Android中使用logcat输出查阅日志,但有时日志很长,可能会被截断,显示不完整。

注意,这里指的是单条日志太长了被截断了,不是指日志太多了被冲掉了

本文研究日志被截断的原因,并给出修改方法。

首先日志被截断的原因有如下几种,其中第一种是首要原因:

  1. 单条日志长度上限,日志如果太长,触及上限则会被截断
  2. 日志如果涉及序列化、binder传输,则受到binder传输上限的限制
  3. 底层(Linux、log设备)限制、系统调用限制

注意,单条日志长度上限是指一次打印的日志的长度,不是指设置-开发者选项-日志缓冲区大小。

查看日志缓冲区大小、单条日志大小

#:/ logcat -g
main: ring buffer is 16 MiB (15 MiB consumed), max entry is 5120 B, max payload is 4068 B
system: ring buffer is 16 MiB (6 MiB consumed), max entry is 5120 B, max payload is 4068 B
crash: ring buffer is 16 MiB (13 KiB consumed), max entry is 5120 B, max payload is 4068 B
kernel: ring buffer is 16 MiB (3 MiB consumed), max entry is 5120 B, max payload is 4068 B

通过logcat -g指令可以读到各个分类的缓冲区上限、目前用量、每次读取量、单条日志长度的上限。

调节日志缓冲区大小

  • 法1: 开发者模式-设置日志缓冲区大小
  • 法2: 通过logcat -G即可设置,等同于法1

调节单条日志大小

修改代码根目录下的system/core/liblog/include/log/log_read.h下的LOGGER_ENTRY_MAX_PAYLOADLOGGER_ENTRY_MAX_LEN

修改后,需要重新编译如下三个模块: liblog logd logcat,推入设备,重启方能生效。(通过logcat -g可以验证修改)

不同Android版本在不同位置,比如这个

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值