android log打印显示不全的原因
2017-02-05 09:34
501 查看
一个优秀的软件系统一定会实时保存系统运行过程中产生的异常或非异常性数据,用于记录系统运行过程产生的各种行为,作为日后发现问题、跟踪问题并解决问题的一个很重要的依据。一般以输出文件的形式保存,同时也可以选择性的在控台打印。日志处理,可谓是任何软件开发过程中必不可少的一个环节。
在Android应用开发阶段,我们常常会使用系统提供的日志打印功能选择性地在Logcat控制台上打印一些数据信息,便于更加直观地调试跟踪应用运行的一个状态,常见如客户端与服务器通讯过程中涉及到的URL链接、request请求参数和response响应结果等。
但如果打印的message过长,比如接口响应结果过大,将会导致Logcat控台数据显示不全。自打使用Log以来经常遇到这个问题,之前也是没太在意,毕竟message太长的情况也是少见,偶尔遇到这种情况就通过Debug工具跟踪调试,复制对应response信息到bejson等其他辅助工具上格式化浏览,多少还是有点不方便。
后来经过查询才得知,Android系统的单条日志打印长度是有限的,在底层Logger驱动程序的一个类
2
3
1
2
3
可以看出,系统显示单条Log信息的长度是固定的,为4*1024个字符长度!Logcat使用的liblog资源包也提到,使用Log打印的message有可能被log内核驱动缩短:
1
了解了其中的长度限制,就好办了。我们可以对Message做个长度判断,采取分段打印的办法输出日志信息,比如这样做:
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
参考地址:
Android - Set max length of logcat messages
Android 日志系统logcat内核代码分析
在Android应用开发阶段,我们常常会使用系统提供的日志打印功能选择性地在Logcat控制台上打印一些数据信息,便于更加直观地调试跟踪应用运行的一个状态,常见如客户端与服务器通讯过程中涉及到的URL链接、request请求参数和response响应结果等。
但如果打印的message过长,比如接口响应结果过大,将会导致Logcat控台数据显示不全。自打使用Log以来经常遇到这个问题,之前也是没太在意,毕竟message太长的情况也是少见,偶尔遇到这种情况就通过Debug工具跟踪调试,复制对应response信息到bejson等其他辅助工具上格式化浏览,多少还是有点不方便。
后来经过查询才得知,Android系统的单条日志打印长度是有限的,在底层Logger驱动程序的一个类
Logger.h头文件中有如下两行代码:
#define LOGGER_ENTRY_MAX_LEN (4*1024) #define LOGGER_ENTRY_MAX_PAYLOAD \\ (LOGGER_ENTRY_MAX_LEN - sizeof(struct logger_entry))1
2
3
1
2
3
可以看出,系统显示单条Log信息的长度是固定的,为4*1024个字符长度!Logcat使用的liblog资源包也提到,使用Log打印的message有可能被log内核驱动缩短:
The message may have been truncated by the kernel log driver.1
1
了解了其中的长度限制,就好办了。我们可以对Message做个长度判断,采取分段打印的办法输出日志信息,比如这样做:
if(xml.length() > 4000) { for(int i=0;i<xml.length();i+=4000){ if(i+4000<xml.length()) Log.i("rescounter"+i,xml.substring(i, i+4000)); else Log.i("rescounter"+i,xml.substring(i, xml.length())); } } else Log.i("resinfo",xml); }1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
参考地址:
Android - Set max length of logcat messages
Android 日志系统logcat内核代码分析
相关文章推荐
- Android 终于知道Log显示不全的原因了
- 关于android studio log日志打印信息不全的原因以及解决方法
- android 基础 log打印显示不全
- Android 终于知道Log显示不全的原因了
- Android 终于知道Log显示不全的原因了
- 关于Android studio Logcat显示不全,不显示自己需要打印的LOG数据
- 【解决方案】Android中Log太多太长打印不全的问题
- android SeekBar thumb显示不全的原因
- Android Studio Logcat显示不全问题
- Android 定义全局LOG打印日志,并显示调用者相关信息
- Android studio打印log显示不全
- Android 长LOG打印不全解决办法一
- android logcat log显示时间
- Android 设置全屏 获得屏幕大小 显示Log
- Eclipse Android LogCat有时候显示不出输出的原因
- android不能显示log的问题
- mtk android lcm 打印log信息方法
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- Android 输出C文件打印的log信息
- 在Android底层lib库源码中打印Log