在Logcat上显示更多的string

我目前正在使用“JSON”作为服务器响应的Android应用程序。 通常我工作在JSON响应。 但现在我有一个logcat的问题,如果JSON响应string很长,超过x字符(我不知道多less是可以显示logcat的最大string),一些JSONstring丢失。

虽然它仍然可以给我的输出,我需要从服务器传输的JSONstring的信息。

有没有可能在logcat上显示更多的string? 就像增加缓冲区或者我可以使用的任何参数来增加logcat可以显示的最大string长度一样。

丑陋的,但它的工作:

public static void longInfo(String str) { if(str.length() > 4000) { Log.i(TAG, str.substring(0, 4000)); longInfo(str.substring(4000)); } else Log.i(TAG, str); } 
 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); 

我就是这么做的

我们的一些RESTful API返回非常长的JSON响应。 以下是为LogCat格式化的方法:

 private static final int LOGCAT_MAX_LENGTH = 3950; ... private void logLongJsonStringIfDebuggable(String s) { if (BuildConfig.DEBUG) { while (s.length() > LOGCAT_MAX_LENGTH) { int substringIndex = s.lastIndexOf(",", LOGCAT_MAX_LENGTH); if (substringIndex == -1) substringIndex = LOGCAT_MAX_LENGTH; Log.d(TAG, s.substring(0, substringIndex)); s = s.substring(substringIndex).trim(); } Log.d(TAG, s); } } 

如果你不使用eclipse,或者你是@Nanne答案不适合你,我只能想到两种select:

  1. 最好,但更复杂的,我想你的JSON是由某种“迭代”(JSON对象和/或数组)组成的,所以,你可以分析和遍历JSON并分别打印LogCat中的每个元素
  2. 更容易,但也更丑陋,拆分子string中的JSONstring,并打印LogCat中的每个子string(你可以在这里find不同的方式分割string)

编辑:另一种可能性:将JSON写入SD卡中的文件(如日志),然后在检查响应时检索文件

为什么不从命令行使用logcat?

我怀疑这是否会是你期望的,但为什么不试一试呢?

发出命令

./adb -e logcat

从有adb的目录。 这是模拟器。 将-ereplace为设备的-d

一般来说,如果你想得到输出到Logcat你应该使用“日志”命令。

一个例子:

 Log.d(TAG,"OUTPUT"): 

d =debugging
TAG =你定义的一个string,在“正常”输出之前的列中显示在Logcat中
OUTPUT =你想要打印的东西

日志是一个日志logging类,您可以使用它将消息打印到logcat。 如果你在DDMS上运行logcat,你可以实时读取消息(下面介绍)。 常用的日志logging方法包括:v(String,String)(verbose),d(String,String)(debug),i(String,String)(information),w(String,String)(warning)和e(String,String )(错误)。

了解更多信息:

http://developer.android.com/guide/developing/debug-tasks.html

编辑:

我之前所做的是,为了testing一些输出你不应该使用的东西:

 System.out.println("JSON stuff"); 

而不是使用这个你应该在你的代码中使用:

 // Values just as example private static void string TAG = "+++JSON+++"; ... Log.d(TAG,"JSON stuff in here"); ... 

它将显示在Logcat中。 我不完全知道为什么,但这不是更好的方法。 像这样你也可以显示一个错误信息:

 Log.e(...); 

它会改变Logcat中输出的颜色,所以如果发生错误,你可能会看得更清楚。