Android开发之 log打印 连续打印内容过多导致部分信息丢失或打印中断

Android开发之 log打印 连续打印内容过多导致部分信息丢失或打印中断

最近在使用retrofit进行接口请求数据log打印输出时,出现了内容过多导致部分信息没打印或者中断问题。网上搜了半天没有对应的解决方案,今天我分享一下自己的解决方法。

问题简述

先贴一下原来的打印代码

String[] split = sb.toString().split("\n");
for(String str : split){
    if(info) {
        Log.i(TAG, str);
    }else{
        Log.e(TAG, str);
    }
}

正常打印效果
在这里插入图片描述

代码是先把添加好要打印的日志信息Stringbuilder对象 通过拆分换行符进行逐行打印。内容少的情况下,输出打印的信息没有问题,但是内容一旦多了起来就会导致内容错乱甚至中断

这是内容过多情况下的输出,只截取了结尾中断的部分
在这里插入图片描述
从图中可以看到部分信息没有打印,即中断了。

解决办法

1 将所要输出的信息,追加在StringBuilder中直接一条语句全部输出打印

Log.i(TAG,StringBuilder.toString());

接下来看一下效果(为了直观的展示,我只截取了内容少的信息输出,其实内容多的输出没有中断或是缺失)

在这里插入图片描述

从图中可以看到,信息是打印出来了(此图为展示范例,内容过多的情况下输出是完整的)。但是仍然有问题。那就是在第一行会展示时间,包名,tag信息后,之后的信息是不展示的,如果输出内容超过一定的行数(20行上下),会再一次输出一次时间、包名、tag信息。这样展示会给人错乱的感觉,可读性也不佳

2 用ArrayList集合收集要输出的日志信息,并在打印的结尾加上序号
 for(int i = 0 ; i < logArrays.size() ; i ++ ){
     String str = logArrays.get(i);
     if (info) {
         Log.i(TAG , str.replace("\n","")+" "+logArrays.size()+" "+i);
         //为保证内容过多导致打印中断会部分信息丢失,后面追加了序号
     } else {
         Log.e(TAG , str.replace("\n","")+" "+logArrays.size()+" "+i);
     }
 }

接下来看一下效果(内容过多不好截取全部,只展示末尾部分)在这里插入图片描述

问题完美解决,至于原因,为什么。不要问,问我也不知道。

关于接口请求log信息输出增加可读性,可查看我往期文章
《Android 开发之Okhttp网络请求日志打印》
《Android 开发之retrofit网络请求日志打印 可读性更强的日志打印 HttpLoggingInterceptor》

也可以加QQ群交流技术

最后推荐一个我自己写的MVVM开源项目《Open MVVM》

  • 欢迎加入QQ群讨论:721765299
    Android OpenMVVM
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值