pkg/logging: use UnmodifiableMapView from dart:collection

remove documentation URL
remove (now) unused collection pkg import
move intro docs to README.md

R=sethladd@google.com

Review URL: https://codereview.chromium.org//413193002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/logging@38546 260f80e4-7a28-3924-810f-c04153c831b5
3 files changed
tree: bd1d3ccbd27df4a52b72a0f8839e36fd6da0d03a
  1. lib/
  2. test/
  3. AUTHORS
  4. LICENSE
  5. PATENTS
  6. pubspec.yaml
  7. README.md
README.md

Initializing

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;
Logger.root.onRecord.listen((LogRecord rec) {
  print('${rec.level.name}: ${rec.time}: ${rec.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.

Logging messages

Create a [Logger] with a unique name to easily identify the source of the log messages.

final Logger log = new 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));

See the [Logger] class for the different logging methods.