android的logcat的message有字符长度的限制,超过将直接截断

http://blog.csdn.net/qidizi/article/details/47291803

今天想在logcat中输出足够多的调试信息时,发现从logcat中返回的信息中明显少了后面一节;

觉得有点奇怪,以为是代码上问题,找了一下,发现不是;

于是guge一下.原来logcat在实现上对于message的内存分配大概是4k左右.所以超过的内容都直接被丢弃;

不输出;

同时发现logcat对于"\n"换行符会自动当成是自动分隔成多条log输出的标志,但是,你Log.d(null,"有多个\n的超过4k长度的字符");

这样的信息,虽然会有多少个\n就产生多少条log,但是你传递给这个message的最多接受大概是4k,后面不要了;然后再按照\n的原则来切割的;


所以,考虑了一下,就自己写一个debug类来自己切分超过4k的message来使用多个log.d输出即可;

简单的实现如下:

[java]  view plain copy print ?
  1. package com.qidizi.softkeyboard;  
  2.   
  3.   
  4. import android.util.Log;  
  5.   
  6.   
  7. class Debug {  
  8.     // 使用Log来显示调试信息,因为log在实现上每个message有4k字符长度限制  
  9.     // 所以这里使用自己分节的方式来输出足够长度的message  
  10.     public static void show(String str) {  
  11.         str = str.trim();  
  12.         int index = 0;  
  13.         int maxLength = 4000;  
  14.         String sub;  
  15.         while (index < str.length()) {  
  16.             // java的字符不允许指定超过总的长度end  
  17.             if (str.length() <= index + maxLength) {  
  18.                 sub = str.substring(index);  
  19.             } else {  
  20.                 sub = str.substring(index, index +maxLength);  
  21.             }  
  22.               
  23.             index += maxLength;  
  24.             Log.i("qidizi_debug", sub.trim());  
  25.         }  
  26.     }  
  27. }  

转载于:https://www.cnblogs.com/nafio/p/9137447.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值