• 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. }  
  • 相关阅读:
    Windows 7 x64环境下SDK Manager闪退的解决方法
    Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
    【智能家居篇】wifi网络结构(下)
    mac 查看python路径
    制作NGUI动态字体
    Mac OS 10.10.3下Apache + mod_wsgi配置【一】
    归档日志
    Cocos2D-X2.2.3学习笔记12(瞬时动作)
    合并两个已经排好序的不等长的数组
    JSON-JSON字符串转换成JSON对象、JSON对象数组、java实体类以及保存到List列表中
  • 原文地址:https://www.cnblogs.com/nafio/p/9137447.html
Copyright © 2020-2023  润新知