Skip to content

Commit 25736b3

Browse files
smotastichaarts
authored andcommitted
Add possibility to add functions as messages to the logger
1 parent 6832ee0 commit 25736b3

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

lib/src/printers/pretty_printer.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,12 @@ class PrettyPrinter extends LogPrinter {
228228
}
229229

230230
String stringifyMessage(dynamic message) {
231-
if (message is Map || message is Iterable) {
231+
final finalMessage = message is Function ? message() : message;
232+
if (finalMessage is Map || finalMessage is Iterable) {
232233
var encoder = JsonEncoder.withIndent(' ', toEncodableFallback);
233-
return encoder.convert(message);
234+
return encoder.convert(finalMessage);
234235
} else {
235-
return message.toString();
236+
return finalMessage.toString();
236237
}
237238
}
238239

lib/src/printers/simple_printer.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@ class SimplePrinter extends LogPrinter {
4848
}
4949

5050
String _stringifyMessage(dynamic message) {
51-
if (message is Map || message is Iterable) {
51+
final finalMessage = message is Function ? message() : message;
52+
if (finalMessage is Map || finalMessage is Iterable) {
5253
var encoder = JsonEncoder.withIndent(null);
53-
return encoder.convert(message);
54+
return encoder.convert(finalMessage);
5455
} else {
55-
return message.toString();
56+
return finalMessage.toString();
5657
}
5758
}
5859
}

test/printers/simple_printer_test.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,19 @@ void main() {
8888
'[D] [1,2,3,4] ERROR: some error',
8989
);
9090
});
91+
92+
test('deal with Function type message', () {
93+
var expectedMessage = 'heavily computed Message';
94+
var withFunction = LogEvent(
95+
Level.debug,
96+
() => expectedMessage,
97+
'some error',
98+
StackTrace.current,
99+
);
100+
101+
expect(
102+
plainPrinter.log(withFunction)[0],
103+
'[D] $expectedMessage ERROR: some error',
104+
);
105+
});
91106
}

0 commit comments

Comments
 (0)