在 Rust 中,要記錄 HTTP 日志,可以使用 log 和 env_logger 這兩個庫。首先,需要在你的 Cargo.toml 文件中添加這兩個庫的依賴:
[dependencies]
log = "0.4"
env_logger = "0.9"
然后,在你的 Rust 代碼中,可以按照以下步驟記錄 HTTP 日志:
use log::{info, error};
use env_logger::Env;
env_logger:fn main() {
// 根據環境變量設置日志級別
env_logger::from_env(Env::default().default_filter_or("info")).init();
}
log 庫記錄日志:async fn handle_request(req: &HttpRequest) -> Result<HttpResponse, Error> {
info!("Received request: {}", req.uri());
// 處理請求...
Ok(HttpResponse::Ok().body("Hello, world!"))
}
在這個例子中,我們使用 info! 宏記錄了一個信息級別的日志,記錄了接收到的請求 URI。你可以根據需要使用其他級別的日志,例如 debug!、warn! 和 error!。
完整的示例代碼如下:
use actix_web::{web, App, HttpResponse, HttpServer, HttpRequest};
use log::{info, error};
use env_logger::Env;
async fn handle_request(req: &HttpRequest) -> Result<HttpResponse, Error> {
info!("Received request: {}", req.uri());
// 處理請求...
Ok(HttpResponse::Ok().body("Hello, world!"))
}
#[actix_web::main]
async fn main() {
// 根據環境變量設置日志級別
env_logger::from_env(Env::default().default_filter_or("info")).init();
HttpServer::new(|| {
App::new().route("/", web::get().to(handle_request))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
這個示例使用了 actix-web 庫來創建一個簡單的 HTTP 服務器。當服務器接收到請求時,會記錄請求的 URI。你可以根據實際需求修改這個示例,以記錄更多的 HTTP 信息。