Java 如何在android日志类中增加控制台输出

Java 如何在android日志类中增加控制台输出,java,android,buffer,logging,Java,Android,Buffer,Logging,对于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平台上的默认日志,控制台输出的字符数量有限。大约相当于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);
            }
    }

}
公共类日志{
私有静态int mode=android.util.Log.INFO;
公共静态void e(字符串标记、字符串消息、可丢弃的tr){

if((mode&android.util.Log.ERROR)在执行大型输出(JSON等)时,1024字符限制的解决方法 就是创建一个简单的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));
        }
String json=data.toString();
int length=json.length();

对于(int i=0;i您是否正在尝试包装日志输出文本?否,因为android平台上的默认日志控制台输出的字符数量有限。大约等于3000多个字符。因此,如果消息长度超过3000个字符,则不会显示在屏幕上。logcat的内核缓冲区容纳64KB的数据。每行限制为1024低级日志函数中的字符;之后该行被截断。我不知道“3000”在哪里或者为什么有些东西会完全消失。或者为什么您试图在一行中记录超过3K个字符的消息。例如,打印JSON响应是必要的,这正是我试图做的,输出GSON消息,但它们被截断,使调试变得困难。