本文档介绍了如何开始在 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 程序通常使用 log
crate 宏来记录日志。
GN 依赖项
将 log
crate 添加到 BUILD.gn
文件的 deps
条目中:
deps = [
"//third_party/rust_crates:log",
]
日志事件
调用 log
crate 提供的宏,以在声明的严重级别记录日志:
fn main() {
log::trace!("something happened: {}", 5); // maps to TRACE
log::debug!("something happened: {}", 4); // maps to DEBUG
log::info!("something happened: {}", 3); // maps to INFO
log::warn!("something happened: {}", 2); // maps to WARN
log::error!("something happened: {}", 1); // maps to ERROR
# You can also use the log crate to emit structured logs.
log::info!(my_key = 3, other_key_debug:?; "something happened");
}
标准串流
Rust 宏(例如 println!
、eprintln!
等)会映射到标准输出 (stdout
) 和标准错误 (stderr
)。使用这些流可能需要为您的程序执行额外的设置工作。
如需了解详情,请参阅不依赖于语言的日志记录文档中的标准流部分。