1. 程式人生 > >(轉)android的logcat的message有字元長度的限制,超過將直接截斷

(轉)android的logcat的message有字元長度的限制,超過將直接截斷

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());
		}
	}
}