Как увеличить вывод консоли в классе android Log - PullRequest
8 голосов
/ 12 января 2011

По умолчанию Вход на платформе Android имеет ограниченное количество символов для вывода на консоль. Вокруг равно чуть больше 3000. Поэтому, если сообщение длиннее 3000 символов, оно не отображается на экране.

Я не нашел лучшего решения, чем это:

public class Log {
    private static int mode = android.util.Log.INFO;

    public static void e(String tag, String msg, Throwable tr) {
        if ((mode & android.util.Log.ERROR) <= 0) return;
        android.util.Log.e(tag, msg, tr);
    }

    public static void e(String tag, String msg) {
        if ((mode & android.util.Log.ERROR) <= 0) return;
        android.util.Log.e(tag, msg);
    }

    public static void w(String tag, String msg) {
        if ((mode & android.util.Log.WARN) <= 0) return;
        android.util.Log.w(tag, msg);
    }

    public static void i(String tag, String msg) {
        if ((mode & android.util.Log.INFO) <= 0) return;
        android.util.Log.i(tag, msg);
    }

    public static void d(String tag, String msg) {
        if ((mode & android.util.Log.DEBUG) <= 0) return;

            int length = msg.length();
            int kind = 3000;
            if (length >= kind) {
                int count = length / kind;
                int u = length % kind;
                int i = 0;
                for (i = 0; i < count; ++i) {
                    int start = i * kind;
                    int end = start + kind;
                    android.util.Log.d(tag, msg.substring(start, end));
                }
                if (u != 0) {
                    int start = length - u;
                    int end = start + u;
                    android.util.Log.d(tag, msg.substring(start, end));
                }
            } else {
                android.util.Log.d(tag, msg);
            }
    }

}

Есть ли лучшее решение этой проблемы?

1 Ответ

9 голосов
/ 18 сентября 2012

Обходной путь для ограничения в 1024 символа при выполнении больших выходных данных (JSON и т. Д.) Заключается в создании простого цикла for, регистрирующего их в виде фрагментов.

Это может быть не так сложно, как у вас, но это легкона глаза и не будет загромождать код слишком много.

        String json = data.toString();
        int length = json.length();

        for(int i=0; i<length; i+=1024)
        {
            if(i+1024<length)
                Log.d("JSON OUTPUT", json.substring(i, i+1024));
            else
                Log.d("JSON OUTPUT", json.substring(i, length));
        }
...