我目前正在开发一款使用“JSON”作为服务器响应的Android应用程序。 通常我会处理JSON响应。但是现在我遇到了logcat的问题, 如果JSON响应字符串非常长,超过x个字符(我不知道logcat可以显示的最大字符串到底有多少),则缺少一些JSON字符串。
虽然它仍然可以给我输出,但我需要有关从服务器传输的JSON字符串的信息。
是否有可能在logcat上显示更多字符串?就像增加缓冲区或任何可以用来增加logcat可以显示的最大字符串长度的参数一样。
答案 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回答不适合你,我只能想到两个选择:
编辑:另一种可能性:将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输出的颜色,因此您可以更好地看到它,例如发生错误。