Closed mirland closed 1 year ago
I'm not convinced adding regexes to the PrettyPrinter
class is warranted given this use case. What about using a custom LogPrinter
instead?
Hey, thanks for reviewing my pr! I see your point. Maybe it's a particular case. However, if I want to do that, I have to copy-paste the printer (because the methods are private). What do you think about creating a public method to filter the log entries? So we can override the class and extend the features.
I will create a new commit with the change so you can check it. It's just an idea, if you think that it's not necessary or it's not aligned with the project I can close the pr.
@haarts , with this change we can create a custom printer like:
class CustomPrettyPrinter extends PrettyPrinter {
final List<RegExp> stacktraceFilters;
CustomPrettyPrinter({
stackTraceBeginIndex = 0,
methodCount = 2,
errorMethodCount = 8,
lineLength = 120,
colors = true,
printEmojis = true,
printTime = false,
excludeBox = const {},
noBoxingByDefault = false,
this.stacktraceFilters = const [],
}) : super(
stackTraceBeginIndex: stackTraceBeginIndex,
methodCount: methodCount,
errorMethodCount: errorMethodCount,
lineLength: lineLength,
colors: colors,
printEmojis: printEmojis,
printTime: printTime,
excludeBox: excludeBox,
noBoxingByDefault: noBoxingByDefault,
);
bool _discardUserStacktraceLine(String line) =>
stacktraceFilters.any((element) => element.hasMatch(line));
@override
bool includeStacktraceLine(String line) =>
super.includeStacktraceLine(line) && !_discardUserStacktraceLine(line);
}
Again, if you think it's not aligned with the project you can just close the pr!
Description:
If you wrap the logger in a custom logger file, the first line of the stack trace is your wrapper class (and it's not useful).
So if you have this:
Then you call
Logger.d()
, the first stacktrace entry logger is not useful.To solve that, I added a
stacktraceFilters
, which enables you to define custom filters. So, now you can do something like: