@@ -12,18 +12,6 @@ enum Level {
1212 nothing,
1313}
1414
15- /// `LogFilter` is called every time a new log message is sent and decides if
16- /// it will be printed or canceled.
17- ///
18- /// The default implementation is [Logger._defaultFilter] .
19- /// Every implementation should consider [Logger.level] .
20- typedef LogFilter = bool Function (
21- Level level,
22- dynamic message, [
23- dynamic error,
24- StackTrace stackTrace,
25- ]);
26-
2715/// An abstract handler of log messages.
2816///
2917/// You can implement a `LogPrinter` from scratch or extend [PrettyPrinter] .
@@ -32,6 +20,19 @@ abstract class LogPrinter {
3220 void log (Level level, dynamic message, dynamic error, StackTrace stackTrace);
3321}
3422
23+ /// An abstract handler of log messages.
24+ ///
25+ /// You can implement your own `LogFilter` or use [DebugFilter] .
26+ /// Every implementation should consider [Logger.level] .
27+ abstract class LogFilter {
28+ /// Is called every time a new log message is sent and decides if
29+ /// it will be printed or canceled.
30+ ///
31+ /// Returns `true` if the message should be logged.
32+ bool shouldLog (Level level, dynamic message,
33+ [dynamic error, StackTrace stackTrace]);
34+ }
35+
3536/// Use instances of logger to send log messages to the [LogPrinter] .
3637class Logger {
3738 /// The current logging level of the app.
@@ -48,7 +49,7 @@ class Logger {
4849 /// [PrettyPrinter] and [_defaultFilter] will be used.
4950 Logger ({LogPrinter printer, LogFilter filter})
5051 : _printer = printer ?? PrettyPrinter (),
51- _filter = filter ?? _defaultFilter ;
52+ _filter = filter ?? DebugFilter () ;
5253
5354 /// Log message at level [Level.verbose] .
5455 void v (dynamic message, [dynamic error, StackTrace stackTrace]) {
@@ -83,25 +84,8 @@ class Logger {
8384 /// Log message with [level] .
8485 void log (Level level, dynamic message,
8586 [dynamic error, StackTrace stackTrace]) {
86- if (_filter (level, message, error, stackTrace)) {
87+ if (_filter. shouldLog (level, message, error, stackTrace)) {
8788 _printer.log (level, message, error, stackTrace);
8889 }
8990 }
90-
91- /// Default implementation of [LogFilter] . All log
92- static bool _defaultFilter (
93- Level level,
94- dynamic message, [
95- dynamic error,
96- StackTrace stackTrace,
97- ]) {
98- var shouldLog = false ;
99- assert (() {
100- if (level.index >= Logger .level.index) {
101- shouldLog = true ;
102- }
103- return true ;
104- }());
105- return shouldLog;
106- }
10791}
0 commit comments