Skip to content

Commit 60bb23f

Browse files
committed
Add logger specific log level
Previously all logger instances shared the same log level. This commit adds the ability to specify log level per instance. It also removes the dependence of a global variable.
1 parent 9df21d3 commit 60bb23f

File tree

5 files changed

+25
-4
lines changed

5 files changed

+25
-4
lines changed

lib/src/filters/debug_filter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class DebugFilter extends LogFilter {
99
bool shouldLog(LogEvent event) {
1010
var shouldLog = false;
1111
assert(() {
12-
if (event.level.index >= Logger.level.index) {
12+
if (event.level.index >= level.index) {
1313
shouldLog = true;
1414
}
1515
return true;

lib/src/filters/production_filter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ part of logger;
44
class ProductionFilter extends LogFilter {
55
@override
66
bool shouldLog(LogEvent event) {
7-
return event.level.index >= Logger.level.index;
7+
return event.level.index >= level.index;
88
}
99
}

lib/src/log_filter.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ part of logger;
55
/// You can implement your own `LogFilter` or use [DebugFilter].
66
/// Every implementation should consider [Logger.level].
77
abstract class LogFilter {
8+
Level level;
89
void init() {}
910

1011
/// Is called every time a new log message is sent and decides if

lib/src/logger.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,16 @@ class Logger {
5252
/// You can provide a custom [printer], [filter] and [output]. Otherwise the
5353
/// defaults: [PrettyPrinter], [DebugFilter] and [ConsoleOutput] will be
5454
/// used.
55-
Logger({LogFilter filter, LogPrinter printer, LogOutput output})
56-
: _filter = filter ?? DebugFilter(),
55+
Logger({
56+
LogFilter filter,
57+
LogPrinter printer,
58+
LogOutput output,
59+
Level level,
60+
}) : _filter = filter ?? DebugFilter(),
5761
_printer = printer ?? PrettyPrinter(),
5862
_output = output ?? ConsoleOutput() {
5963
_filter.init();
64+
_filter.level = level ?? Logger.level;
6065
_printer._buffer = _outputBuffer;
6166
_printer.init();
6267
_output.init();

test/logger_test.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,19 @@ void main() {
143143
expect(printedError, "Error");
144144
expect(printedStackTrace, stackTrace);
145145
});
146+
147+
test('setting log level above log level of message', () {
148+
printedMessage = null;
149+
var logger = Logger(
150+
filter: ProductionFilter(),
151+
printer: callbackPrinter,
152+
level: Level.warning,
153+
);
154+
155+
logger.d("This isn't logged");
156+
expect(printedMessage, isNull);
157+
158+
logger.w("This is");
159+
expect(printedMessage, "This is");
160+
});
146161
}

0 commit comments

Comments
 (0)