blob: 2241ce934640a7c51af253918205d4ceb1b2cb04 [file] [log] [blame] [view] [edit]
# Logging in Dart
Dart programs on Fuchsia generally write log messages with the `lib.logging` package, consuming and
initializing it through the `fuchsia_logger` package.
See the [language agnostic logging docs] for more information
about recording and viewing logs.
## Requirements
### GN dependency
The necessary packages can be included with an addition to `deps` in `BUILD.gn`:
```
deps = [
"//sdk/dart/fuchsia_logger",
]
```
The `fuchsia_logger` package also provides Dart's `lib.logging`.
See [Dart: Overview][dart-dev] for more information about building Dart within Fuchsia.
### Component manifest dependency
Ensure that your component has the required capabilities to log by including the
following in your component manifest:
* {.cml}
```json5
{
include: [
"syslog/client.shard.cml"
],
...
}
```
The syslog library will fallback to `stderr` if the `LogSink` connection fails.
## Initialization
In your main function, call the `setupLogger()` function to initialize logging:
```dart
import 'package:fuchsia_logger/logger.dart';
main() {
// process name will be used if no name is provided here
setupLogger(name: 'my-component');
}
```
### Configure severity
By default only messages with `INFO` severity or higher are printed. Severity level can be adjusted
by providing the `level` parameter in the `setupLogger()` call.
For example, to make all log messages appear in [`ffx log`]:
```dart
setupLogger(name: 'noisy-component', level: Level.ALL);
```
## Recording messages
The `log` object is a [Logger] instance.
```dart
import 'package:fuchsia_logger/logger.dart';
log.finest('quietest'); // maps to TRACE
log.finer('also quietest'); // maps to TRACE also
log.fine('quiet'); // maps to DEBUG
log.info('hello world!'); // maps to INFO
log.warning('uhhh'); // maps to WARN
log.severe('oh no!'); // maps to ERROR
log.shout('this is fatal.'); // maps to FATAL
```
## Standard streams
`print` goes to standard out (`stdout`).
See [`stdout` & `stderr`] in the language-agnostic logging docs for details on the routing of stdio
streams in the system.
[Logger]: https://pub.dev/documentation/logging/latest/logging/Logger-class.html
[`ffx log`]: /docs/development/diagnostics/logs/viewing.md
[dart-dev]: /docs/development/languages/dart/README.md
[`stdout` & `stderr`]: /docs/development/diagnostics/logs/recording.md#stdout-stderr
[language agnostic logging docs]: /docs/concepts/components/diagnostics/logs/README.md