tower_web/middleware/log/
middleware.rs

1use super::LogService;
2use middleware::Middleware;
3
4use http;
5use tower_service::Service;
6
7/// Decorate a service by logging all received requests.
8#[derive(Debug)]
9pub struct LogMiddleware {
10    target: &'static str,
11}
12
13impl LogMiddleware {
14    /// Create a new `LogMiddleware` instance configured to use `target`.
15    pub fn new(target: &'static str) -> LogMiddleware {
16        LogMiddleware { target }
17    }
18}
19
20impl<S, RequestBody, ResponseBody> Middleware<S> for LogMiddleware
21where S: Service<Request = http::Request<RequestBody>,
22                Response = http::Response<ResponseBody>>,
23      S::Error: ::std::error::Error,
24{
25    type Request = http::Request<RequestBody>;
26    type Response = http::Response<ResponseBody>;
27    type Error = S::Error;
28    type Service = LogService<S>;
29
30    fn wrap(&self, service: S) -> Self::Service {
31        LogService::new(service, self.target)
32    }
33}