1. 程式人生 > >android studio 超長log列印,解決log列印不全問題

android studio 超長log列印,解決log列印不全問題

之前專案中返回json字串超長,導致log輸出一部分,後面部分沒有,上網查了不少資料,結果給的方法都是:

public static void i(String tag, String msg) {
        if (DEBUG_MODE) {
            if (msg.length() > LENGTH) {
                for (int i = 0; i < msg.length(); i += LENGTH) {
                    if (i + LENGTH < msg.length()) {
                        android.util.Log.i(tag, msg.substring(i, i + LENGTH));
                    } else {
                        android.util.Log.i(tag, msg.substring(i, msg.length()));
                    }
                }
            } else {
                android.util.Log.i(tag, msg);
            }
        }
    }

其中LENGTH是自己設定的長度值,一般為4000(下面有原因為啥是這個值).

還很有理有據的解釋,底層Logger有長度限制是4*1024,都不知道驗證一下就發出了,結果這個方法的確可以列印很多log了,但是,但是!  log換行列印之後,

兩行之間會丟失不少字元!

經過不懈努力,我終於找到了辦法:

public static void i(String tag, String msg) {  //資訊太長,分段列印
        //因為String的length是字元數量不是位元組數量所以為了防止中文字元過多,
        //  把4*1024的MAX位元組列印長度改為2001字元數
        int max_str_length = 2001 - tag.length();
        //大於4000時
        while (msg.length() > max_str_length) {
            Log.i(tag, msg.substring(0, max_str_length));
            msg = msg.substring(max_str_length);
        }
        //剩餘部分
        Log.i(tag, msg);
    }

完美解決.