题记
flutter的日志有这么一个问题,在android studio里面,如果太长了(大概1000多个字符)打印不全问题。我用的日志组件是 logger。如果有小伙伴和我一样遇到这个问题的话可以看一看。
解决方案
继承
logger组件的PrettyPrinter类,重写stringifyMessage方法,然后遇到太长了就换好。为了好看,如果打印的消息里原本就有换行符就重新计算长度。
- 1、自定义支持长文本的
log打印器
///自定义支持长文本log的打印器
class LongPrettyPrinter extends PrettyPrinter {
final int warpLen; //控制换行个数
@override
LongPrettyPrinter({
this.warpLen = 1000,
stackTraceBeginIndex = 0,
methodCount = 2,
errorMethodCount = 8,
lineLength = 120,
colors = true,
printEmojis = true,
printTime = false,
noBoxingByDefault = false,
}) : super(
stackTraceBeginIndex: stackTraceBeginIndex,
methodCount: methodCount,
errorMethodCount: errorMethodCount,
lineLength: lineLength,
colors: colors,
printEmojis: printEmojis,
printTime: printTime,
noBoxingByDefault: noBoxingByDefault,
);
@override
String stringifyMessage(message) {
var msg = super.stringifyMessage(message);
var i = 0;
var len = warpLen;
var newStr = "";
while (msg.length > i + len) {
var next = i + len;
var last = msg.indexOf("\n", i);
if (last < i + 1 || last > next) {
newStr += msg.substring(i, next) + "\n";
i = next;
} else {
newStr += msg.substring(i, last);
i = last;
}
}
if (i + len > msg.length) {
newStr += msg.substring(i);
}
return newStr;
}
}
- 2、初始化
logger的时候使用自己实现的打印类
Logger logger = Logger(printer: LongPrettyPrinter(methodCount: 2,warpLen:1000));