登录 Rust

本文档介绍了如何开始在 Fuchsia 上记录 Rust 程序。如需了解有关记录和查看日志的一般信息,请参阅与语言无关的日志记录文档

必需的功能

通过在组件清单中添加以下代码,确保您的组件请求适当的日志记录功能:

{
  include: [
    "syslog/client.shard.cml"
  ],
  ...
}

初始化

您必须先初始化日志记录功能,然后才能通过 Rust 代码记录日志。初始化由 fuchsia crate 设置宏处理。

GN 依赖项

将以下 deps 添加到您的 BUILD.gn 文件中:

deps = [
  "//src/lib/fuchsia",
]

初始设置

在 Rust 源文件中,对于使用 fuchsia::mainfuchsia::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)。使用这些流可能需要对您的程序进行额外的设置工作。

如需了解详情,请参阅与语言无关的日志记录文档中的标准流部分。