Add log middleware

This commit is contained in:
DefectingCat
2023-04-15 00:28:01 +08:00
parent a399ca330e
commit 11a0649472
4 changed files with 32 additions and 2 deletions

1
Cargo.lock generated
View File

@ -996,6 +996,7 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
"tower",
"wildmatch",
]

View File

@ -18,3 +18,4 @@ chrono = "0.4.24"
axum = "0.6.15"
reqwest = "0.11.16"
wildmatch = "2.1.1"
tower = "0.4.13"

View File

@ -1,11 +1,13 @@
use std::{net::SocketAddr, process::exit};
use anyhow::Result;
use axum::{http, response, routing::get, Router, Server};
use axum::{http, middleware, response, routing::get, Router, Server};
use log::{error, info};
use tower::ServiceBuilder;
use crate::{
config::Config,
middlewares::logger_middleware,
routes::messages::{match_check_get, match_check_post},
};
@ -15,6 +17,7 @@ mod consts;
mod error;
mod http_client;
mod logger;
mod middlewares;
mod routes;
#[tokio::main]
@ -39,6 +42,7 @@ async fn main() -> Result<()> {
.route("/smsGBK.aspx", get(match_check_get).post(match_check_post));
let app = Router::new()
.merge(message_routes)
.layer(ServiceBuilder::new().layer(middleware::from_fn(logger_middleware)))
.fallback(fallback)
.with_state(config.list);
@ -56,7 +60,7 @@ async fn main() -> Result<()> {
.await
{
Ok(()) => {
info!("Listen at {}", &addr);
info!("Server shutdown");
}
Err(err) => {
error!("Can not start server {}", err);

24
src/middlewares.rs Normal file
View File

@ -0,0 +1,24 @@
use std::fmt::Debug;
use axum::{http::Request, middleware::Next, response::Response};
use log::{debug, info};
pub async fn logger_middleware<B>(request: Request<B>, next: Next<B>) -> Response
where
B: Debug,
{
let host = if let Some(host) = request.headers().get("host") {
host.to_str().unwrap_or("Unknown")
} else {
"Unknown"
};
info!(
"{} - {} - {:?} - {:?}",
request.method(),
request.uri(),
request.version(),
host
);
debug!("{:?}", request);
next.run(request).await
}