commit | 85f2bc285c7279d00131c72c2465559ce0c4d0d8 | [log] [tgz] |
---|---|---|
author | James D. Lin <jamesderlin@users.noreply.github.com> | Fri Jan 10 15:37:51 2020 -0800 |
committer | Nate Bosch <nbosch1@gmail.com> | Fri Jan 10 15:37:51 2020 -0800 |
tree | 2f5ea038ad3dfe17b8a8b9b7893f6c02261c7720 | |
parent | 49669c490c2d0b57badf07f2df2cae61ce1b605c [diff] |
Replace _rootLevel with root._level (#69) Previously root._level and _rootLevel both existed and could be different. The existing code took care to always use _rootLevel instead of root._level, but I think it'd be better to not have the extra Level variable at all. This also provides an opportunity to expose a public constant for the the default logging level, further addressing https://github.com/dart-lang/logging/issues/57.
By default, the logging package does not do anything useful with the log messages. You must configure the logging level and add a handler for the log messages.
Here is a simple logging configuration that logs all messages via print
.
Logger.root.level = Level.ALL; // defaults to Level.INFO Logger.root.onRecord.listen((record) { print('${record.level.name}: ${record.time}: ${record.message}'); });
First, set the root Level
. All messages at or above the level are sent to the onRecord
stream.
Then, listen on the onRecord
stream for LogRecord
events. The LogRecord
class has various properties for the message, error, logger name, and more.
Create a Logger
with a unique name to easily identify the source of the log messages.
final log = Logger('MyClassName');
Here is an example of logging a debug message and an error:
var future = doSomethingAsync().then((result) { log.fine('Got the result: $result'); processResult(result); }).catchError((e, stackTrace) => log.severe('Oh noes!', e, stackTrace));
When logging more complex messages, you can pass a closure instead that will be evaluated only if the message is actually logged:
log.fine(() => [1, 2, 3, 4, 5].map((e) => e * 4).join("-"));
See the Logger
class for the different logging methods.