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

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

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

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

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

不输出;

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

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


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

简单的实现如下:

  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