Skip to content

Commit 9504193

Browse files
committed
Adopted more common log-levels.
* Added `all`, `off`, `trace` and `fatal`. * Deprecated `nothing`, `verbose` and `wtf`.
1 parent 8f6c94e commit 9504193

12 files changed

+101
-52
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Instead of a string message, you can also pass other objects like `List`, `Map`
4141
You can log with different levels:
4242

4343
```dart
44-
logger.v("Verbose log");
44+
logger.t("Trace log");
4545
4646
logger.d("Debug log");
4747
@@ -51,7 +51,7 @@ logger.w("Warning log");
5151
5252
logger.e("Error log");
5353
54-
logger.wtf("What a terrible failure log");
54+
logger.f("What a fatal log");
5555
```
5656

5757
To show only specific log levels, you can set:
@@ -60,7 +60,7 @@ To show only specific log levels, you can set:
6060
Logger.level = Level.warning;
6161
```
6262

63-
This hides all `verbose`, `debug` and `info` log events.
63+
This hides all `trace`, `debug` and `info` log events.
6464

6565
## Options
6666

example/main.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void demo() {
2323

2424
logger.e('Error! Something bad happened', 'Test Error');
2525

26-
loggerNoStack.v({'key': 5, 'value': 'something'});
26+
loggerNoStack.t({'key': 5, 'value': 'something'});
2727

28-
Logger(printer: SimplePrinter(colors: true)).v('boom');
28+
Logger(printer: SimplePrinter(colors: true)).t('boom');
2929
}

lib/src/logger.dart

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,25 @@ import 'package:logger/src/printers/pretty_printer.dart';
88
/// [Level]s to control logging output. Logging can be enabled to include all
99
/// levels above certain [Level].
1010
enum Level {
11-
verbose,
12-
debug,
13-
info,
14-
warning,
15-
error,
16-
wtf,
17-
nothing,
11+
all(0),
12+
@Deprecated('[verbose] is being deprecated in favor of [trace].')
13+
verbose(999),
14+
trace(1000),
15+
debug(2000),
16+
info(3000),
17+
warning(4000),
18+
error(5000),
19+
@Deprecated('[wtf] is being deprecated in favor of [fatal].')
20+
wtf(5999),
21+
fatal(6000),
22+
@Deprecated('[nothing] is being deprecated in favor of [off].')
23+
nothing(9999),
24+
off(10000),
25+
;
26+
27+
final int levelInt;
28+
29+
const Level(this.levelInt);
1830
}
1931

2032
class LogEvent {
@@ -48,7 +60,7 @@ class Logger {
4860
/// The current logging level of the app.
4961
///
5062
/// All logs with levels below this level will be omitted.
51-
static Level level = Level.verbose;
63+
static Level level = Level.trace;
5264

5365
/// The current default implementation of log filter.
5466
static LogFilter Function() defaultFilter = () => DevelopmentFilter();
@@ -88,8 +100,15 @@ class Logger {
88100
}
89101

90102
/// Log a message at level [Level.verbose].
103+
@Deprecated(
104+
"[Level.verbose] is being deprecated in favor of [Level.trace], use [t] instead.")
91105
void v(dynamic message, [dynamic error, StackTrace? stackTrace]) {
92-
log(Level.verbose, message, error, stackTrace);
106+
t(message, error, stackTrace);
107+
}
108+
109+
/// Log a message at level [Level.trace].
110+
void t(dynamic message, [dynamic error, StackTrace? stackTrace]) {
111+
log(Level.trace, message, error, stackTrace);
93112
}
94113

95114
/// Log a message at level [Level.debug].
@@ -113,8 +132,15 @@ class Logger {
113132
}
114133

115134
/// Log a message at level [Level.wtf].
135+
@Deprecated(
136+
"[Level.wtf] is being deprecated in favor of [Level.fatal], use [f] instead.")
116137
void wtf(dynamic message, [dynamic error, StackTrace? stackTrace]) {
117-
log(Level.wtf, message, error, stackTrace);
138+
f(message, error, stackTrace);
139+
}
140+
141+
/// Log a message at level [Level.fatal].
142+
void f(dynamic message, [dynamic error, StackTrace? stackTrace]) {
143+
log(Level.fatal, message, error, stackTrace);
118144
}
119145

120146
/// Log a message with [level].
@@ -124,8 +150,11 @@ class Logger {
124150
throw ArgumentError('Logger has already been closed.');
125151
} else if (error != null && error is StackTrace) {
126152
throw ArgumentError('Error parameter cannot take a StackTrace!');
127-
} else if (level == Level.nothing) {
128-
throw ArgumentError('Log events cannot have Level.nothing');
153+
} else if (level == Level.all) {
154+
throw ArgumentError('Log events cannot have Level.all');
155+
// ignore: deprecated_member_use_from_same_package
156+
} else if (level == Level.off || level == Level.nothing) {
157+
throw ArgumentError('Log events cannot have Level.off');
129158
}
130159

131160
var logEvent = LogEvent(level, message, error, stackTrace);

lib/src/printers/hybrid_printer.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,19 @@ class HybridPrinter extends LogPrinter {
1818
HybridPrinter(
1919
LogPrinter realPrinter, {
2020
LogPrinter? debug,
21+
LogPrinter? trace,
22+
@Deprecated('[verbose] is being deprecated in favor of [trace].')
2123
LogPrinter? verbose,
24+
LogPrinter? fatal,
25+
@Deprecated('[wtf] is being deprecated in favor of [fatal].')
2226
LogPrinter? wtf,
2327
LogPrinter? info,
2428
LogPrinter? warning,
2529
LogPrinter? error,
2630
}) : _printerMap = {
2731
Level.debug: debug ?? realPrinter,
28-
Level.verbose: verbose ?? realPrinter,
29-
Level.wtf: wtf ?? realPrinter,
32+
Level.trace: trace ?? verbose ?? realPrinter,
33+
Level.fatal: fatal ?? wtf ?? realPrinter,
3034
Level.info: info ?? realPrinter,
3135
Level.warning: warning ?? realPrinter,
3236
Level.error: error ?? realPrinter,

lib/src/printers/logfmt_printer.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import 'package:logger/src/logger.dart';
77
/// ```
88
class LogfmtPrinter extends LogPrinter {
99
static final levelPrefixes = {
10-
Level.verbose: 'verbose',
10+
Level.trace: 'trace',
1111
Level.debug: 'debug',
1212
Level.info: 'info',
1313
Level.warning: 'warning',
1414
Level.error: 'error',
15-
Level.wtf: 'wtf',
15+
Level.fatal: 'fatal',
1616
};
1717

1818
@override

lib/src/printers/prefix_printer.dart

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,21 @@ class PrefixPrinter extends LogPrinter {
1515
final LogPrinter _realPrinter;
1616
late Map<Level, String> _prefixMap;
1717

18-
PrefixPrinter(this._realPrinter,
19-
{debug, verbose, wtf, info, warning, error}) {
18+
PrefixPrinter(
19+
this._realPrinter, {
20+
String? debug,
21+
String? trace,
22+
@Deprecated('[verbose] is being deprecated in favor of [trace].') verbose,
23+
String? fatal,
24+
@Deprecated('[wtf] is being deprecated in favor of [fatal].') wtf,
25+
String? info,
26+
String? warning,
27+
String? error,
28+
}) {
2029
_prefixMap = {
2130
Level.debug: debug ?? 'DEBUG',
22-
Level.verbose: verbose ?? 'VERBOSE',
23-
Level.wtf: wtf ?? 'WTF',
31+
Level.trace: trace ?? verbose ?? 'TRACE',
32+
Level.fatal: fatal ?? wtf ?? 'FATAL',
2433
Level.info: info ?? 'INFO',
2534
Level.warning: warning ?? 'WARNING',
2635
Level.error: error ?? 'ERROR',

lib/src/printers/pretty_printer.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,21 @@ class PrettyPrinter extends LogPrinter {
2626
static const singleDivider = '┄';
2727

2828
static final levelColors = {
29-
Level.verbose: AnsiColor.fg(AnsiColor.grey(0.5)),
29+
Level.trace: AnsiColor.fg(AnsiColor.grey(0.5)),
3030
Level.debug: const AnsiColor.none(),
3131
Level.info: const AnsiColor.fg(12),
3232
Level.warning: const AnsiColor.fg(208),
3333
Level.error: const AnsiColor.fg(196),
34-
Level.wtf: const AnsiColor.fg(199),
34+
Level.fatal: const AnsiColor.fg(199),
3535
};
3636

3737
static final levelEmojis = {
38-
Level.verbose: '',
38+
Level.trace: '',
3939
Level.debug: '🐛 ',
4040
Level.info: '💡 ',
4141
Level.warning: '⚠️ ',
4242
Level.error: '⛔ ',
43-
Level.wtf: '👾 ',
43+
Level.fatal: '👾 ',
4444
};
4545

4646
/// Matches a stacktrace line as generated on Android/iOS devices.
@@ -120,10 +120,10 @@ class PrettyPrinter extends LogPrinter {
120120
/// to prevent 'boxing' of a specific level,
121121
/// include it with `true` in the map.
122122
///
123-
/// Example to prevent boxing of [Level.verbose] and [Level.info]:
123+
/// Example to prevent boxing of [Level.trace] and [Level.info]:
124124
/// ```dart
125125
/// excludeBox: {
126-
/// Level.verbose: true,
126+
/// Level.trace: true,
127127
/// Level.info: true,
128128
/// },
129129
/// ```

lib/src/printers/simple_printer.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ import 'package:logger/src/logger.dart';
1010
/// ```
1111
class SimplePrinter extends LogPrinter {
1212
static final levelPrefixes = {
13-
Level.verbose: '[V]',
13+
Level.trace: '[T]',
1414
Level.debug: '[D]',
1515
Level.info: '[I]',
1616
Level.warning: '[W]',
1717
Level.error: '[E]',
18-
Level.wtf: '[WTF]',
18+
Level.fatal: '[FATAL]',
1919
};
2020

2121
static final levelColors = {
22-
Level.verbose: AnsiColor.fg(AnsiColor.grey(0.5)),
22+
Level.trace: AnsiColor.fg(AnsiColor.grey(0.5)),
2323
Level.debug: const AnsiColor.none(),
2424
Level.info: const AnsiColor.fg(12),
2525
Level.warning: const AnsiColor.fg(208),
2626
Level.error: const AnsiColor.fg(196),
27-
Level.wtf: const AnsiColor.fg(199),
27+
Level.fatal: const AnsiColor.fg(199),
2828
};
2929

3030
final bool printTime;

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: 1.4.0
44
repository: https://github.com/Bungeefan/logger
55

66
environment:
7-
sdk: ">=2.12.0 <4.0.0"
7+
sdk: ">=2.17.0 <4.0.0"
88

99
dev_dependencies:
1010
test: ^1.16.8

test/logger_test.dart

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,14 @@ void main() {
6464

6565
logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
6666

67-
var levels = Level.values.take(6);
67+
var levels = [
68+
Level.trace,
69+
Level.debug,
70+
Level.info,
71+
Level.warning,
72+
Level.error,
73+
Level.fatal,
74+
];
6875
for (var level in levels) {
6976
var message = Random().nextInt(999999999).toString();
7077
logger.log(level, message);
@@ -89,9 +96,10 @@ void main() {
8996
expect(printedStackTrace, stackTrace);
9097
}
9198

92-
expect(() => logger.log(Level.verbose, 'Test', StackTrace.current),
99+
expect(() => logger.log(Level.trace, 'Test', StackTrace.current),
93100
throwsArgumentError);
94-
expect(() => logger.log(Level.nothing, 'Test'), throwsArgumentError);
101+
expect(() => logger.log(Level.off, 'Test'), throwsArgumentError);
102+
expect(() => logger.log(Level.all, 'Test'), throwsArgumentError);
95103
});
96104

97105
test('Multiple Loggers', () {
@@ -111,11 +119,11 @@ void main() {
111119
expect(printedStackTrace, null);
112120
});
113121

114-
test('Logger.v', () {
122+
test('Logger.t', () {
115123
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
116124
var stackTrace = StackTrace.current;
117-
logger.v('Test', 'Error', stackTrace);
118-
expect(printedLevel, Level.verbose);
125+
logger.t('Test', 'Error', stackTrace);
126+
expect(printedLevel, Level.trace);
119127
expect(printedMessage, 'Test');
120128
expect(printedError, 'Error');
121129
expect(printedStackTrace, stackTrace);
@@ -161,11 +169,11 @@ void main() {
161169
expect(printedStackTrace, stackTrace);
162170
});
163171

164-
test('Logger.wtf', () {
172+
test('Logger.f', () {
165173
var logger = Logger(filter: _AlwaysFilter(), printer: callbackPrinter);
166174
var stackTrace = StackTrace.current;
167-
logger.wtf('Test', 'Error', stackTrace);
168-
expect(printedLevel, Level.wtf);
175+
logger.f('Test', 'Error', stackTrace);
176+
expect(printedLevel, Level.fatal);
169177
expect(printedMessage, 'Test');
170178
expect(printedError, 'Error');
171179
expect(printedStackTrace, stackTrace);

0 commit comments

Comments
 (0)