(轉)android的logcat的message有字元長度的限制,超過將直接截斷
阿新 • • 發佈:2019-01-10
https://blog.csdn.net/qidizi/article/details/47291803
今天想在logcat中輸出足夠多的除錯資訊時,發現從logcat中返回的資訊中明顯少了後面一節;
覺得有點奇怪,以為是程式碼上問題,找了一下,發現不是;
於是guge一下.原來logcat在實現上對於message的記憶體分配大概是4k左右.所以超過的內容都直接被丟棄;
不輸出;
同時發現logcat對於"\n"換行符會自動當成是自動分隔成多條log輸出的標誌,但是,你Log.d(null,"有多個\n的超過4k長度的字元");
這樣的資訊,雖然會有多少個\n就產生多少條log,但是你傳遞給這個message的最多接受大概是4k,後面不要了;然後再按照\n的原則來切割的;
所以,考慮了一下,就自己寫一個debug類來自己切分超過4k的message來使用多個log.d輸出即可;
簡單的實現如下:
package com.qidizi.softkeyboard; import android.util.Log; class Debug { // 使用Log來顯示除錯資訊,因為log在實現上每個message有4k字元長度限制 // 所以這裡使用自己分節的方式來輸出足夠長度的message public static void show(String str) { str = str.trim(); int index = 0; int maxLength = 4000; String sub; while (index < str.length()) { // java的字元不允許指定超過總的長度end if (str.length() <= index + maxLength) { sub = str.substring(index); } else { sub = str.substring(index, maxLength); } index += maxLength; Log.i("qidizi_debug", sub.trim()); } } }