在 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(); }
- 在处理 HTTP 请求时,使用
log
库记录日志:
async fn handle_request(req: &HttpRequest) -> Result{ 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{ 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 信息。