android studio 超長log列印,解決log列印不全問題
阿新 • • 發佈:2019-02-01
之前專案中返回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); }
完美解決.