在Logcat上显示更多字符串

问题描述:

我目前正在使用'JSON'作为来自服务器的响应的android应用程序。 通常我使用JSON响应。但是现在我遇到了一个logcat问题, 如果JSON响应字符串很长,超过x字符(我不知道logcat可以显示的最大字符串数量是多少),一些JSON字符串是失踪。在Logcat上显示更多字符串

尽管它仍然可以给我的输出,我需要的是从服务器发送来的JSON字符串的信息。

是否有可能显示在logcat的多个字符串?就像增加缓冲区或任何可用于增加logcat可显示的最大字符串长度的参数一样。如果你不使用

+0

为什么不将json分成多个消息? – Mark 2011-01-11 09:25:38

+0

我遇到了完全相同的问题 – 2012-07-22 00:03:18

蚀,或你是谁@Nanne答案不为你工作,我只能想到两个选择:

  1. 最好的,但更复杂的,我想你的JSON是由组成某种“iterables”(JSON对象和/或阵列),这样,就可以解析并遍历JSON和在分开的logcat
  2. 更容易而且丑陋打印每个元件的,分割在子JSON字符串并打印在每个子在logcat的(你可以找到将字符串分割here不同的方式)

编辑:另一种可能性:写JSON在SD卡就像一个日志文件,然后当你想检查响应

+0

难道不可以配置IDE(在我的情况下是Android Studio)不切断我的日志语句吗?在Xcode中,我从来没有遇到过这个问题。 – 2016-08-12 17:44:58

为什么不使用的logcat从命令行检索文件?

我怀疑它是否将是你期待什么,但为什么不试一试?

发出命令

./adb -e logcat

从具有亚行的目录。 这是模拟器。 替换-e-d对于一个设备

+8

在我的测试中,似乎命令行logcat也在某个点切断了日志条目字符串。 – ThomasW 2011-05-12 07:07:11

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

一个例子:

Log.d(TAG,"OUTPUT"): 

d =调试
TAG =定义字符串, “正常” 输出
OUTPUT =东西ü希望之前被显示在logcat中在列即可打印

日志是一个日志类,你可以用它来打印出信息到logcat的。如果您在DDMS上运行logcat,您可以实时阅读邮件(接下来介绍)。常见的日志记录方法包括: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

编辑:

我彪之前就是为了测试一些东西与产出不应该使用:

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中输出的颜色,所以你可以看到它更好,如果如发生错误。

+8

问题是他正在使用logcat,但logcat条目中字符串的长度有一个上限。 – ThomasW 2011-05-12 07:11:33

丑陋,但它的工作:

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); 
    } 
}