日志记录在Web应用程序中扮演着至关重要的角色,它能够:
Salvo提供基本的 Log 功能的中间件. 如果中间件直接添加到了 Router 上,它将无法捕获所有 Router 都不匹配时返回的 404 错误,建议添加到 Service 上.
Router
Service
示例代码
use salvo::logging::Logger; use salvo::prelude::*; #[handler] async fn hello() -> &'static str { "Hello World" } #[handler] async fn error() -> StatusError { StatusError::bad_request() .brief("Bad request error") .detail("The request was malformed.") } #[tokio::main] async fn main() { tracing_subscriber::fmt().init(); let router = Router::new() .get(hello) .push(Router::with_path("error").get(error)); let service = Service::new(router).hoop(Logger::new()); let acceptor = TcpListener::new("0.0.0.0:8698").bind().await; Server::new(acceptor).serve(service).await; }
[package] name = "example-logging" version.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true [dependencies] salvo = { workspace = true, features = ["logging"] } tokio = { workspace = true, features = ["macros"] } tracing.workspace = true tracing-subscriber.workspace = true