Skip to content

Commit cc856a5

Browse files
committed
Re-land #34: Allow switching out logger defaults
1 parent 2050e3b commit cc856a5

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

lib/src/logger.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ class Logger {
5050
/// All logs with levels below this level will be omitted.
5151
static Level level = Level.verbose;
5252

53+
/// The current default implementation of log filter.
54+
static LogFilter Function() defaultFilter = () => DevelopmentFilter();
55+
56+
/// The current default implementation of log printer.
57+
static LogPrinter Function() defaultPrinter = () => PrettyPrinter();
58+
59+
/// The current default implementation of log output.
60+
static LogOutput Function() defaultOutput = () => ConsoleOutput();
61+
5362
static final Set<LogCallback> _logCallbacks = {};
5463

5564
static final Set<OutputCallback> _outputCallbacks = {};
@@ -69,9 +78,9 @@ class Logger {
6978
LogPrinter? printer,
7079
LogOutput? output,
7180
Level? level,
72-
}) : _filter = filter ?? DevelopmentFilter(),
73-
_printer = printer ?? PrettyPrinter(),
74-
_output = output ?? ConsoleOutput() {
81+
}) : _filter = filter ?? defaultFilter(),
82+
_printer = printer ?? defaultPrinter(),
83+
_output = output ?? defaultOutput() {
7584
_filter.init();
7685
_filter.level = level ?? Logger.level;
7786
_printer.init();

test/logger_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,23 @@ void main() {
9494
expect(() => logger.log(Level.nothing, 'Test'), throwsArgumentError);
9595
});
9696

97+
test('Multiple Loggers', () {
98+
var logger = Logger(level: Level.info, printer: callbackPrinter);
99+
var secondLogger = Logger(level: Level.debug, printer: callbackPrinter);
100+
101+
logger.log(Level.debug, 'Test');
102+
expect(printedLevel, null);
103+
expect(printedMessage, null);
104+
expect(printedError, null);
105+
expect(printedStackTrace, null);
106+
107+
secondLogger.log(Level.debug, 'Test');
108+
expect(printedLevel, Level.debug);
109+
expect(printedMessage, 'Test');
110+
expect(printedError, null);
111+
expect(printedStackTrace, null);
112+
});
113+
97114
test('Logger.v', () {
98115
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
99116
var stackTrace = StackTrace.current;

0 commit comments

Comments
 (0)