android studio 超长log打印,解决log打印不全问题

本文介绍了一种有效解决Android应用程序中Log输出不完整的方法,通过调整字符串长度和改进输出方式,确保日志信息完整记录。

之前项目中返回json字符串超长,导致log输出一部分,后面部分没有,上网查了不少资料,结果给的方法都是:

 

public static void i(String tag, String msg) {
        if (DEBUG_MODE) {
            if (msg.length() > LENGTH) {
                for (int i = 0; i < msg.length(); i += LENGTH) {
                    if (i + LENGTH < msg.length()) {
                        android.util.Log.i(tag, msg.substring(i, i + LENGTH));
                    } else {
                        android.util.Log.i(tag, msg.substring(i, msg.length()));
                    }
                }
            } else {
                android.util.Log.i(tag, msg);
            }
        }
    }


其中LENGTH是自己设置的长度值,一般为4000(下面有原因为啥是这个值).

 

还很有理有据的解释,底层Logger有长度限制是4*1024,都不知道验证一下就发出了,结果这个方法的确可以打印很多log了,但是,但是!  log换行打印之后,

两行之间会丢失不少字符!

经过不懈努力,我终于找到了办法:

 

public static void i(String tag, String msg) {  //信息太长,分段打印
        //因为String的length是字符数量不是字节数量所以为了防止中文字符过多,
        //  把4*1024的MAX字节打印长度改为2001字符数
        int max_str_length = 2001 - tag.length();
        //大于4000时
        while (msg.length() > max_str_length) {
            Log.i(tag, msg.substring(0, max_str_length));
            msg = msg.substring(max_str_length);
        }
        //剩余部分
        Log.i(tag, msg);
    }


完美解决.

 

20200330更新:

使用 logger 吧,打印的日志还能自定义样式,可以直接定位到日志是哪行代码输出的,很方便:GitHub地址

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值