android studio 超长log打印,解决log打印不全问题
16lz
2021-01-26
之前项目中返回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); }
完美解决.
更多相关文章
- android studio离线配置gradle
- Android(安卓)Span 的使用
- Android(安卓)获得Url、Uri字符串后面拼接的参数
- ListView 添加长度样式不固定的分割线
- Andrid中的plurals
- Android资源之String (一): 特殊字符
- http通信,Android(安卓)Gzip压缩解压
- InputFilter方法filter 解释
- ImageView 长按保存