在 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 信息。