web-dev-qa-db-ja.com

Logcatでより多くの文字列を表示する

現在、Androidサーバーからの応答として「JSON」を使用するアプリに取り組んでいます。通常、JSON応答に取り組んでいます。しかし、JSON応答文字列が非常に長く、x文字よりも長い(logcatで表示できる最大文字列がどれくらいかは正確にはわかりません)、一部のJSON文字列が欠落しています。

それでも出力は得られますが、サーバーから送信されるJSON文字列に関する情報が必要です。

Logcatでより多くの文字列を表示する可能性はありますか?バッファや、logcatで表示できる最大文字列長を増やすために使用できるパラメータを増やすように。

37
bro

醜いがそれは仕事をします:

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

これは私がやった方法です。

9
Swapnil Mhaske

一部の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);
    }
}
2
TheGraeme

eclipseを使用していない場合、または使用しているのに@Nanneの回答が機能しない場合、次の2つの方法でしか考えられません。

  1. 最高ですが、より複雑です。JSONはある種の「反復可能オブジェクト」(JSONオブジェクトまたは配列、あるいはその両方)で構成されているため、JSONを解析およびトラバースし、LogCatの各要素を個別に出力できます。
  2. JSON文字列を部分文字列に分割し、各文字列をLogCatに出力します(文字列を分割するさまざまな方法を見つけることができます here )。

edit:別の可能性:JSONをログのようにSDカード内のファイルに書き込み、応答を確認するときにファイルを取得します

1
maid450

コマンドラインからlogcatを使用しないのはなぜですか?

期待通りかどうか疑問ですが、やってみませんか?

コマンドを発行する

./adb -e logcat

adbがあるディレクトリから。これはエミュレータ用です。デバイスの-e-dに置き換えます

0
Aman Alam