如何使用 Axum 启用日志记录/跟踪?

Fin*_*ber 15 rust rust-tracing rust-axum

我正在学习 Axum,我想将日志记录添加到我组装的服务中,但不幸的是我无法让它工作。

我已添加 tower-http 来使用TraceLayer并将其添加到我的应用程序中:

# Cargo.toml
[dependencies]
axum = "0.6.1"
tower-http = { version = "0.3.5", features = ["trace"] }
Run Code Online (Sandbox Code Playgroud)
use tower_http::trace::TraceLayer;

let app = Router::new()
    .route("/:name/path", axum::routing::get(handler))
    .layer(TraceLayer::new_for_http())
Run Code Online (Sandbox Code Playgroud)

但是当我启动应用程序并向端点发出请求时,没有记录任何内容。是否有我可能错过的配置步骤?

kmd*_*eko 16

您需要设置一个“订阅者”来输出TraceLayer. 您可以使用跟踪订阅者箱快速启动并运行:

# Cargo.toml
[dependencies]
tracing = "0.1.37"
tracing-subscriber = "0.3.16"
Run Code Online (Sandbox Code Playgroud)
tracing_subscriber::fmt()
    .with_max_level(tracing::Level::DEBUG)
    .init();
Run Code Online (Sandbox Code Playgroud)

默认情况下,TraceLayer将使用DEBUG级别进行日志记录,因此.with_max_level对于查看这些日志很重要。TraceLayer您可以使用可自定义的方法更改行为on_*

也可以看看: