在Logcat上显示更多字符串

时间:2011-01-11 09:05:03

标签: android logcat

我目前正在开发一款使用“JSON”作为服务器响应的Android应用程序。 通常我会处理JSON响应。但是现在我遇到了logcat的问题, 如果JSON响应字符串非常长,超过x个字符(我不知道logcat可以显示的最大字符串到底有多少),则缺少一些JSON字符串。

虽然它仍然可以给我输出,但我需要有关从服务器传输的JSON字符串的信息。

是否有可能在logcat上显示更多字符串?就像增加缓冲区或任何可以用来增加logcat可以显示的最大字符串长度的参数一样。

6 个答案:

答案 0 :(得分:73)

丑陋但它确实起作用:

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

答案 1 :(得分:9)

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

这就是我做到的。

答案 2 :(得分:2)

我们的一些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);
    }
}

答案 3 :(得分:1)

如果你没有使用eclipse,或者你是@Nanne回答不适合你,我只能想到两个选择:

  1. 最好但更复杂,我想你的JSON是由某种“迭代”(JSON对象和/或数组)组成的,因此,你可以解析和遍历JSON并单独打印LogCat中的每个元素
  2. 更简单但更丑陋,在子字符串中拆分JSON字符串并打印LogCat中的每个子字符串(您可以找到分割字符串的不同方法here
  3. 编辑:另一种可能性:将JSON写入SD卡中的文件(如日志),然后在要检查响应时检索文件

答案 4 :(得分:0)

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

我怀疑它是否会是你所期待的,但为什么不尝试呢?

发出命令

./adb -e logcat

来自具有adb的目录。 这是模拟器。 将-e替换为设备的-d

答案 5 :(得分:-5)

通常,如果要将输出输出到Logcat,则应使用“Log”命令。

一个例子:

Log.d(TAG,"OUTPUT"):

d =调试
TAG =您定义的字符串,在“正常”输出之前的列中显示在Logcat中 OUTPUT =想要打印的东西

  

Log是一个日志类,可用于将消息打印到logcat。如果在DDMS上运行logcat,则可以实时读取消息(下面介绍)。常见的日志记录方法包括:v(String,String)(verbose),d(String,String)(debug),i(String,String)(信息),w(String,String)(警告)和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输出的颜色,因此您可以更好地看到它,例如发生错误。