logd 删除log

进程Log过多,超过上限,导致log被删除,类似:

chatty  : uid=1000(system) MountService expire 168 lines


logd  删除log的判断依据为:

    查看代码,logd 的判断是否删除的依据为:

    void LogBuffer::maybePrune(log_id_t id) {
        size_t sizes = stats.sizes(id);        //获取指定buffer ,在内存中log的总大小,                             
        unsigned long maxSize = log_buffer_size(id);   //获取此 buffer的先限制大小。
        if (sizes > maxSize) {
            。。。。。。
        if (pruneRows <= minElements) {
            pruneRows = minElements;
        }
        if (pruneRows > 256) {
            pruneRows = 256;
        }
            prune(id, pruneRows);
        }
    }
    Logd 获取当前buffer缓存的log大小,与其设定的 buffer相比,如果sizes >maxSize 则进行删除操作, 删除当前log个数的1/10 ~~256 个,删除log的判断依据maxSize, 是在 LogBuffer::init()方法中进行设置的,默认大小为 LOG_BUFFER_SIZE (256 * 1024)

在android 原生中扩大 log buffer 的方法有两种:

        1、通过adb 命令,动态修改指定的bufer 大小如图:
    android  默认7个buffer 的值都为:256*1024

       

      通过运行命令 :adb logcat  -b buffer_name  -Gsize,   来扩大指定 buffer 的值,例如:

           

      2、 通过修改build.prop ,也可以达到修改buffer 大小的目的,但是需要 重启生效。


建议:

   可以将命令 整合到一个工具apk 中,以列表的方式展现所有buffer,手工去调正 指定buffer的大小。



备注:

buffer 的有效值位于:

LOG_BUFFER_MIN_SIZE (64 * 1024UL)  ~~~~ LOG_BUFFER_MAX_SIZE (256 * 1024 * 1024UL)

如果设置的值,大于或小于有效值,那么设置不生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值