日誌記錄在Web應用程式中扮演著至關重要的角色,它能夠:
Salvo提供具備基礎日誌功能的中介軟體。若直接將中介軟體新增至 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