Dart 中的日志
在 Fuchsia 上的 Dart 程序通常使用 lib.logging
包来写入日志消息,通过 fuchsia_logger
包来获取和初始化。
请参阅语言无关日志文档来获取更多关于记录和查看日志的信息。
需求
GN 依赖
必要的包可以包含在BUILD.gn
中的deps
中:
deps = [
"//topaz/public/dart/fuchsia_logger",
]
fuchsia_logger
包也提供了 Dart 的 lib.logging
。
请参阅 Dart: 概述以了解关于在 Fuchsia 中构建 Dart 的更多信息。
组件清单依赖
请在组件清单中包含以下内容,以确保您的组件具有记录日志所需的功能:
{.cmx}
{
"include": [
"sdk/lib/diagnostics/syslog/client.shard.cmx"
],
...
}
{.cml}
{
include: [
"sdk/lib/diagnostics/syslog/client.shard.cml"
],
...
}
注意:以上仅适用于树内开发。 这在 fxbug.dev/64207 中进行了跟踪。 树外开发人员应该复制下面展示的片段。
{.cmx}
{
"sandbox": {
"services": [
"fuchsia.logger.LogSink"
]
},
...
}
{.cml}
{
use: [
{ protocol: "fuchsia.logger.LogSink" },
],
}
如果 LogSink
连接失败,系统日志库将回退到 stderr
。
初始化
在您的主函数中,调用 setupLogger()
函数来初始化日志。
import 'package:fuchsia_logger/logger.dart';
main() {
// 如果此处未提供名称,将使用进程名称
setupLogger(name: 'my-component');
}
配置等级
默认情况下,仅打印具有“INFO”严重性或更高级别的消息。
可以通过在 setupLogger()
调用中给出 level
参数来调整严重性级别。
例如:使所有日志消息出现在 fx log
中:
setupLogger(name: 'noisy-component', level: Level.ALL);
记录消息
log
对象是一个 Logger 的实例。
import 'package:fuchsia_logger/logger.dart';
log.finest('quietest'); // 映射到 TRACE
log.finer('also quietest'); // 也映射到 TRACE
log.fine('quiet'); // 映射到 DEBUG
log.info('hello world!'); // 映射到 INFO
log.warning('uhhh'); // 映射到 WARN
log.severe('oh no!'); // 映射到 ERROR
log.shout('this is fatal.'); // 映射到 FATAL(译:致命的错误)
标准流
print
进入标准输出 (stdout
)。
有关系统中输入输出流路由的详细信息,请参阅与语言无关的日志记录文档中的 [stdout
和 stderr
]。