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 addtion to deps in BUILD.gn:
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:
- {.cmx}
- {.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:
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]:
Recording messages
The log object is a Logger instance.
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.
ffx logdart-dev[stdout & stderr](../../diagnostics/logs/recording.md#stdout-stderr