android的logcat的message有字符长度的限制,超过将直接截断
2015-08-05 09:36
816 查看
今天想在logcat中输出足够多的调试信息时,发现从logcat中返回的信息中明显少了后面一节;
觉得有点奇怪,以为是代码上问题,找了一下,发现不是;
于是guge一下.原来logcat在实现上对于message的内存分配大概是4k左右.所以超过的内容都直接被丢弃;
不输出;
同时发现logcat对于"\n"换行符会自动当成是自动分隔成多条log输出的标志,但是,你Log.d(null,"有多个\n的超过4k长度的字符");
这样的信息,虽然会有多少个\n就产生多少条log,但是你传递给这个message的最多接受大概是4k,后面不要了;然后再按照\n的原则来切割的;
所以,考虑了一下,就自己写一个debug类来自己切分超过4k的message来使用多个log.d输出即可;
简单的实现如下:
觉得有点奇怪,以为是代码上问题,找了一下,发现不是;
于是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, maxLength); } index += maxLength; Log.i("qidizi_debug", sub.trim()); } } }
相关文章推荐
- Android fb0 截屏实现
- android工程下怎么查看System.out.println()信息
- Android组件Broadcast Receiver学习
- Android Studio官方视频教程笔记
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?若无SD卡,就用内部。
- Android4.0 Launcher拖拽原理分析
- android4.4.2源码和内核编译——图文详细记录
- android 消息提示框点击“确定”按钮后,不能及时关闭提示框的解决方案
- Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)
- android应用无法运行报错记录(持续更新)
- Android 布局文件
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- android view startAnimation后setVisibility没有效果
- Android Studio系列教程四--Gradle基础
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- android 获取文件的扩展名和去掉文件扩展名的小例子
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View