android的logcat的message有字符长度的限制,超过将直接截断
2024-08-30 14:25:42
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输出即可;
简单的实现如下:
- package com.qidizi.softkeyboard;
- import android.util.Log;
- class Debug {
- // 使用Log来显示调试信息,因为log在实现上每个message有4k字符长度限制
- // 所以这里使用自己分节的方式来输出足够长度的message
- public static void show(String str) {
- str = str.trim();
- int index = 0;
- int maxLength = 4000;
- String sub;
- while (index < str.length()) {
- // java的字符不允许指定超过总的长度end
- if (str.length() <= index + maxLength) {
- sub = str.substring(index);
- } else {
- sub = str.substring(index, index +maxLength);
- }
- index += maxLength;
- Log.i("qidizi_debug", sub.trim());
- }
- }
- }
最新文章
- *POJ1830 高斯消元
- iOS开发ARC内存管理技术要点
- win7+vs2010+opencv2.4.6配置
- C#拖放实现餐饮系统转台操作
- nodejs 更新最新版本
- Storm实时计算框架的编程模式
- 项目中Service层的写法
- 自定义使用AVCaptureSession 拍照,摄像,载图
- 关于MySQL Connector/C++那点事儿
- [Raobin] Ext.net在页面中以窗体的形式打开另外的页面
- Sublime Text3 配置markdown插件
- 常见 wifi热点的linux 驱动
- OpenCV 之 网络摄像头
- Linux - RAID和LVM
- 网路知识总结(session&;&;Cookie&;&;三次握手&;&;请求头)
- 实现Repeater控件的记录单选
- 相对定位和绝对定位 left和margin-left
- python 回溯法 子集树模板 系列 —— 2、迷宫问题
- python3入门之print,import,input介绍
- iOS小知识点