本文档介绍了如何开始在 Fuchsia 上记录 Rust 程序。如需了解有关记录和查看日志的一般信息,请参阅与语言无关的日志记录文档。
必需的功能
通过在组件清单中添加以下代码,确保您的组件请求适当的日志记录功能:
{
include: [
"syslog/client.shard.cml"
],
...
}
初始化
您必须先初始化日志记录功能,然后才能通过 Rust 代码记录日志。初始化由 fuchsia
crate 设置宏处理。
GN 依赖项
将以下 deps
添加到您的 BUILD.gn
文件中:
deps = [
"//src/lib/fuchsia",
]
初始设置
在 Rust 源文件中,对于使用 fuchsia::main
或 fuchsia::test
宏初始化的任何函数,日志记录默认处于启用状态:
#[fuchsia::main]
fn main() {
// ...
}
#[fuchsia::test]
fn example_test() {
// ...
}
您也可以传递 logging
标志以明确说明这一点:
#[fuchsia::main(logging = true)]
fn main() {
// ...
}
#[fuchsia::test(logging = true)]
fn example_test() {
// ...
}
添加标签
日志消息可以包含一个或多个标记,以提供额外的上下文。如需为给定范围启用日志标记,请在初始化期间传递 logging_tags
参数:
#[fuchsia::main(logging_tags = ["foo", "bar"])]
fn main() {
// ...
}
#[fuchsia::test(logging_tags = ["foo", "bar"])]
fn example_test_with_tags() {
// ...
}
记录日志
Fuchsia 上的 Rust 程序通常使用 tracing
crate 宏记录日志。
GN 依赖项
将 tracing
crate 添加到 BUILD.gn
文件的 deps
条目:
deps = [
"//third_party/rust_crates:tracing",
]
记录事件
调用 tracing
crate 提供的宏,以记录所声明严重级别的日志:
use tracing;
fn main() {
tracing::trace!("something happened: {}", 5); // maps to TRACE
tracing::debug!("something happened: {}", 4); // maps to DEBUG
tracing::info!("something happened: {}", 3); // maps to INFO
tracing::warn!("something happened: {}", 2); // maps to WARN
tracing::error!("something happened: {}", 1); // maps to ERROR
}
标准信息流
Rust 宏(例如 println!
、eprintln!
等)会映射到标准输出 (stdout
) 和标准错误 (stderr
)。使用这些流可能需要对您的程序进行额外的设置工作。
如需了解详情,请参阅与语言无关的日志记录文档中的标准流部分。