Skip to content

Commit b31f8e9

Browse files
committed
Adopted dart's developer log signature, closes #29
1 parent 4bbdbff commit b31f8e9

12 files changed

+162
-97
lines changed

example/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void demo() {
2121

2222
loggerNoStack.w('Just a warning!');
2323

24-
logger.e('Error! Something bad happened', 'Test Error');
24+
logger.e('Error! Something bad happened', error: 'Test Error');
2525

2626
loggerNoStack.t({'key': 5, 'value': 'something'});
2727

lib/src/logger.dart

Lines changed: 79 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,19 @@ enum Level {
3232
class LogEvent {
3333
final Level level;
3434
final dynamic message;
35-
final dynamic error;
35+
final Object? error;
3636
final StackTrace? stackTrace;
3737

3838
/// Time when this log was created.
3939
final DateTime time;
4040

41-
LogEvent(this.level, this.message, [this.error, this.stackTrace])
42-
: time = DateTime.now();
41+
LogEvent(
42+
this.level,
43+
this.message, {
44+
DateTime? time,
45+
this.error,
46+
this.stackTrace,
47+
}) : time = time ?? DateTime.now();
4348
}
4449

4550
class OutputEvent {
@@ -102,50 +107,96 @@ class Logger {
102107
/// Log a message at level [Level.verbose].
103108
@Deprecated(
104109
"[Level.verbose] is being deprecated in favor of [Level.trace], use [t] instead.")
105-
void v(dynamic message, [dynamic error, StackTrace? stackTrace]) {
106-
t(message, error, stackTrace);
110+
void v(
111+
dynamic message, {
112+
DateTime? time,
113+
Object? error,
114+
StackTrace? stackTrace,
115+
}) {
116+
t(message, time: time, error: error, stackTrace: stackTrace);
107117
}
108118

109119
/// Log a message at level [Level.trace].
110-
void t(dynamic message, [dynamic error, StackTrace? stackTrace]) {
111-
log(Level.trace, message, error, stackTrace);
120+
void t(
121+
dynamic message, {
122+
DateTime? time,
123+
Object? error,
124+
StackTrace? stackTrace,
125+
}) {
126+
log(Level.trace, message, time: time, error: error, stackTrace: stackTrace);
112127
}
113128

114129
/// Log a message at level [Level.debug].
115-
void d(dynamic message, [dynamic error, StackTrace? stackTrace]) {
116-
log(Level.debug, message, error, stackTrace);
130+
void d(
131+
dynamic message, {
132+
DateTime? time,
133+
Object? error,
134+
StackTrace? stackTrace,
135+
}) {
136+
log(Level.debug, message, time: time, error: error, stackTrace: stackTrace);
117137
}
118138

119139
/// Log a message at level [Level.info].
120-
void i(dynamic message, [dynamic error, StackTrace? stackTrace]) {
121-
log(Level.info, message, error, stackTrace);
140+
void i(
141+
dynamic message, {
142+
DateTime? time,
143+
Object? error,
144+
StackTrace? stackTrace,
145+
}) {
146+
log(Level.info, message, time: time, error: error, stackTrace: stackTrace);
122147
}
123148

124149
/// Log a message at level [Level.warning].
125-
void w(dynamic message, [dynamic error, StackTrace? stackTrace]) {
126-
log(Level.warning, message, error, stackTrace);
150+
void w(
151+
dynamic message, {
152+
DateTime? time,
153+
Object? error,
154+
StackTrace? stackTrace,
155+
}) {
156+
log(Level.warning, message,
157+
time: time, error: error, stackTrace: stackTrace);
127158
}
128159

129160
/// Log a message at level [Level.error].
130-
void e(dynamic message, [dynamic error, StackTrace? stackTrace]) {
131-
log(Level.error, message, error, stackTrace);
161+
void e(
162+
dynamic message, {
163+
DateTime? time,
164+
Object? error,
165+
StackTrace? stackTrace,
166+
}) {
167+
log(Level.error, message, time: time, error: error, stackTrace: stackTrace);
132168
}
133169

134170
/// Log a message at level [Level.wtf].
135171
@Deprecated(
136172
"[Level.wtf] is being deprecated in favor of [Level.fatal], use [f] instead.")
137-
void wtf(dynamic message, [dynamic error, StackTrace? stackTrace]) {
138-
f(message, error, stackTrace);
173+
void wtf(
174+
dynamic message, {
175+
DateTime? time,
176+
Object? error,
177+
StackTrace? stackTrace,
178+
}) {
179+
f(message, time: time, error: error, stackTrace: stackTrace);
139180
}
140181

141182
/// Log a message at level [Level.fatal].
142-
void f(dynamic message, [dynamic error, StackTrace? stackTrace]) {
143-
log(Level.fatal, message, error, stackTrace);
183+
void f(
184+
dynamic message, {
185+
DateTime? time,
186+
Object? error,
187+
StackTrace? stackTrace,
188+
}) {
189+
log(Level.fatal, message, time: time, error: error, stackTrace: stackTrace);
144190
}
145191

146192
/// Log a message with [level].
147-
void log(Level level, dynamic message,
148-
[dynamic error, StackTrace? stackTrace]) {
193+
void log(
194+
Level level,
195+
dynamic message, {
196+
DateTime? time,
197+
Object? error,
198+
StackTrace? stackTrace,
199+
}) {
149200
if (!_active) {
150201
throw ArgumentError('Logger has already been closed.');
151202
} else if (error != null && error is StackTrace) {
@@ -157,7 +208,13 @@ class Logger {
157208
throw ArgumentError('Log events cannot have Level.off');
158209
}
159210

160-
var logEvent = LogEvent(level, message, error, stackTrace);
211+
var logEvent = LogEvent(
212+
level,
213+
message,
214+
time: time,
215+
error: error,
216+
stackTrace: stackTrace,
217+
);
161218
for (var callback in _logCallbacks) {
162219
callback(logEvent);
163220
}

test/logger_test.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,22 @@ void main() {
8181
expect(printedStackTrace, null);
8282

8383
message = Random().nextInt(999999999).toString();
84-
logger.log(level, message, 'MyError');
84+
logger.log(level, message, error: 'MyError');
8585
expect(printedLevel, level);
8686
expect(printedMessage, message);
8787
expect(printedError, 'MyError');
8888
expect(printedStackTrace, null);
8989

9090
message = Random().nextInt(999999999).toString();
9191
var stackTrace = StackTrace.current;
92-
logger.log(level, message, 'MyError', stackTrace);
92+
logger.log(level, message, error: 'MyError', stackTrace: stackTrace);
9393
expect(printedLevel, level);
9494
expect(printedMessage, message);
9595
expect(printedError, 'MyError');
9696
expect(printedStackTrace, stackTrace);
9797
}
9898

99-
expect(() => logger.log(Level.trace, 'Test', StackTrace.current),
99+
expect(() => logger.log(Level.trace, 'Test', error: StackTrace.current),
100100
throwsArgumentError);
101101
expect(() => logger.log(Level.off, 'Test'), throwsArgumentError);
102102
expect(() => logger.log(Level.all, 'Test'), throwsArgumentError);
@@ -122,7 +122,7 @@ void main() {
122122
test('Logger.t', () {
123123
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
124124
var stackTrace = StackTrace.current;
125-
logger.t('Test', 'Error', stackTrace);
125+
logger.t('Test', error: 'Error', stackTrace: stackTrace);
126126
expect(printedLevel, Level.trace);
127127
expect(printedMessage, 'Test');
128128
expect(printedError, 'Error');
@@ -132,7 +132,7 @@ void main() {
132132
test('Logger.d', () {
133133
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
134134
var stackTrace = StackTrace.current;
135-
logger.d('Test', 'Error', stackTrace);
135+
logger.d('Test', error: 'Error', stackTrace: stackTrace);
136136
expect(printedLevel, Level.debug);
137137
expect(printedMessage, 'Test');
138138
expect(printedError, 'Error');
@@ -142,7 +142,7 @@ void main() {
142142
test('Logger.i', () {
143143
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
144144
var stackTrace = StackTrace.current;
145-
logger.i('Test', 'Error', stackTrace);
145+
logger.i('Test', error: 'Error', stackTrace: stackTrace);
146146
expect(printedLevel, Level.info);
147147
expect(printedMessage, 'Test');
148148
expect(printedError, 'Error');
@@ -152,7 +152,7 @@ void main() {
152152
test('Logger.w', () {
153153
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
154154
var stackTrace = StackTrace.current;
155-
logger.w('Test', 'Error', stackTrace);
155+
logger.w('Test', error: 'Error', stackTrace: stackTrace);
156156
expect(printedLevel, Level.warning);
157157
expect(printedMessage, 'Test');
158158
expect(printedError, 'Error');
@@ -162,7 +162,7 @@ void main() {
162162
test('Logger.e', () {
163163
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
164164
var stackTrace = StackTrace.current;
165-
logger.e('Test', 'Error', stackTrace);
165+
logger.e('Test', error: 'Error', stackTrace: stackTrace);
166166
expect(printedLevel, Level.error);
167167
expect(printedMessage, 'Test');
168168
expect(printedError, 'Error');
@@ -172,7 +172,7 @@ void main() {
172172
test('Logger.f', () {
173173
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
174174
var stackTrace = StackTrace.current;
175-
logger.f('Test', 'Error', stackTrace);
175+
logger.f('Test', error: 'Error', stackTrace: stackTrace);
176176
expect(printedLevel, Level.fatal);
177177
expect(printedMessage, 'Test');
178178
expect(printedError, 'Error');

test/outputs/file_output_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ void main() {
1717
var output = FileOutput(file: file);
1818
await output.init();
1919

20-
final event0 = OutputEvent(LogEvent(Level.info, null), ["First event"]);
21-
final event1 = OutputEvent(LogEvent(Level.info, null), ["Second event"]);
22-
final event2 = OutputEvent(LogEvent(Level.info, null), ["Third event"]);
20+
final event0 = OutputEvent(LogEvent(Level.info, ""), ["First event"]);
21+
final event1 = OutputEvent(LogEvent(Level.info, ""), ["Second event"]);
22+
final event2 = OutputEvent(LogEvent(Level.info, ""), ["Third event"]);
2323

2424
output.output(event0);
2525
output.output(event1);

test/outputs/memory_output_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ void main() {
55
test('Memory output buffer size is limited', () {
66
var output = MemoryOutput(bufferSize: 2);
77

8-
final event0 = OutputEvent(LogEvent(Level.info, null), []);
9-
final event1 = OutputEvent(LogEvent(Level.info, null), []);
10-
final event2 = OutputEvent(LogEvent(Level.info, null), []);
8+
final event0 = OutputEvent(LogEvent(Level.info, ""), []);
9+
final event1 = OutputEvent(LogEvent(Level.info, ""), []);
10+
final event2 = OutputEvent(LogEvent(Level.info, ""), []);
1111

1212
output.output(event0);
1313
output.output(event1);

test/outputs/multi_output_test.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ void main() {
88

99
final multiOutput = MultiOutput([output1, output2]);
1010

11-
final event0 = OutputEvent(LogEvent(Level.info, null), []);
11+
final event0 = OutputEvent(LogEvent(Level.info, ""), []);
1212
multiOutput.output(event0);
1313

1414
expect(output1.buffer.length, 1);
1515
expect(output2.buffer.length, 1);
1616
expect(output1.buffer.elementAt(0), equals(output2.buffer.elementAt(0)));
1717
expect(output1.buffer.elementAt(0), equals(event0));
1818

19-
final event1 = OutputEvent(LogEvent(Level.info, null), []);
19+
final event1 = OutputEvent(LogEvent(Level.info, ""), []);
2020
multiOutput.output(event1);
2121

2222
expect(output1.buffer.length, 2);
@@ -29,11 +29,11 @@ void main() {
2929

3030
test('passing null does not throw an exception', () {
3131
final output = MultiOutput(null);
32-
output.output(OutputEvent(LogEvent(Level.info, null), []));
32+
output.output(OutputEvent(LogEvent(Level.info, ""), []));
3333
});
3434

3535
test('passing null in the list does not throw an exception', () {
3636
final output = MultiOutput([null]);
37-
output.output(OutputEvent(LogEvent(Level.info, null), []));
37+
output.output(OutputEvent(LogEvent(Level.info, ""), []));
3838
});
3939
}

test/outputs/stream_output_test.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ void main() {
99
expect(e, ['hi there']);
1010
});
1111

12-
out.output(OutputEvent(LogEvent(Level.debug, null), ['hi there']));
12+
out.output(OutputEvent(LogEvent(Level.debug, ""), ['hi there']));
1313
});
1414

1515
test('respects listen', () {
1616
var out = StreamOutput();
1717

18-
out.output(OutputEvent(LogEvent(Level.debug, null), ['dropped']));
18+
out.output(OutputEvent(LogEvent(Level.debug, ""), ['dropped']));
1919

2020
out.stream.listen((var e) {
2121
expect(e, ['hi there']);
2222
});
2323

24-
out.output(OutputEvent(LogEvent(Level.debug, null), ['hi there']));
24+
out.output(OutputEvent(LogEvent(Level.debug, ""), ['hi there']));
2525
});
2626

2727
test('respects pause', () {
@@ -32,8 +32,8 @@ void main() {
3232
});
3333

3434
sub.pause();
35-
out.output(OutputEvent(LogEvent(Level.debug, null), ['dropped']));
35+
out.output(OutputEvent(LogEvent(Level.debug, ""), ['dropped']));
3636
sub.resume();
37-
out.output(OutputEvent(LogEvent(Level.debug, null), ['hi there']));
37+
out.output(OutputEvent(LogEvent(Level.debug, ""), ['hi there']));
3838
});
3939
}

test/printers/hybrid_printer_test.dart

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@ void main() {
1818
var printerB = TestLogPrinter();
1919
var printerC = TestLogPrinter();
2020

21-
var debugEvent = LogEvent(Level.debug, 'debug', 'blah', StackTrace.current);
22-
var infoEvent = LogEvent(Level.info, 'info', 'blah', StackTrace.current);
23-
var warningEvent =
24-
LogEvent(Level.warning, 'warning', 'blah', StackTrace.current);
25-
var errorEvent = LogEvent(Level.error, 'error', 'blah', StackTrace.current);
21+
var debugEvent = LogEvent(Level.debug, 'debug',
22+
error: 'blah', stackTrace: StackTrace.current);
23+
var infoEvent = LogEvent(Level.info, 'info',
24+
error: 'blah', stackTrace: StackTrace.current);
25+
var warningEvent = LogEvent(Level.warning, 'warning',
26+
error: 'blah', stackTrace: StackTrace.current);
27+
var errorEvent = LogEvent(Level.error, 'error',
28+
error: 'blah', stackTrace: StackTrace.current);
2629

2730
var hybridPrinter = HybridPrinter(printerA, debug: printerB, error: printerC);
2831
test('uses wrapped printer by default', () {

test/printers/logfmt_printer_test.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ void main() {
99
printer.log(LogEvent(
1010
Level.debug,
1111
'some message',
12-
Exception('boom'),
13-
StackTrace.current,
12+
error: Exception('boom'),
13+
stackTrace: StackTrace.current,
1414
))[0],
1515
contains('level=debug'),
1616
);
@@ -21,8 +21,8 @@ void main() {
2121
printer.log(LogEvent(
2222
Level.debug,
2323
'some message',
24-
Exception('boom'),
25-
StackTrace.current,
24+
error: Exception('boom'),
25+
stackTrace: StackTrace.current,
2626
))[0],
2727
contains('msg="some message"'),
2828
);
@@ -32,8 +32,8 @@ void main() {
3232
var output = printer.log(LogEvent(
3333
Level.debug,
3434
{'a': 123, 'foo': 'bar baz'},
35-
Exception('boom'),
36-
StackTrace.current,
35+
error: Exception('boom'),
36+
stackTrace: StackTrace.current,
3737
))[0];
3838

3939
expect(output, contains('a=123'));
@@ -44,8 +44,8 @@ void main() {
4444
var output = printer.log(LogEvent(
4545
Level.debug,
4646
'some message',
47-
Exception('boom'),
48-
StackTrace.current,
47+
error: Exception('boom'),
48+
stackTrace: StackTrace.current,
4949
))[0];
5050
expect(output, contains('error="Exception: boom"'));
5151

0 commit comments

Comments
 (0)