Struct actix_web::middleware::Logger [−][src]
pub struct Logger(_);
Expand description
Middleware
for logging request and response info to the terminal.
Logger
middleware uses standard log crate to log information. You should
enable logger for actix_web
package to see access log.
(env_logger
or similar)
Usage
Create Logger
middleware with the specified format
.
Default Logger
could be created with default
method, it uses the
default format:
%a "%r" %s %b "%{Referer}i" "%{User-Agent}i" %T
use actix_web::{middleware::Logger, App};
std::env::set_var("RUST_LOG", "actix_web=info");
env_logger::init();
let app = App::new()
.wrap(Logger::default())
.wrap(Logger::new("%a %{User-Agent}i"));
Format
%%
The percent sign
%a
Remote IP-address (IP-address of proxy if using reverse proxy)
%t
Time when the request was started to process (in rfc3339 format)
%r
First line of request
%s
Response status code
%b
Size of response in bytes, including HTTP headers
%T
Time taken to serve the request, in seconds with floating fraction in
.06f format
%D
Time taken to serve the request, in milliseconds
%U
Request URL
%{r}a
Real IP remote address *
%{FOO}i
request.headers[‘FOO’]
%{FOO}o
response.headers[‘FOO’]
%{FOO}e
os.environ[‘FOO’]
%{FOO}xi
custom request replacement labelled “FOO”
Security
* It is calculated using
ConnectionInfo::realip_remote_addr()
If you use this value ensure that all requests come from trusted hosts, since it is trivial for the remote client to simulate being another client.
Implementations
Ignore and do not log access info for specified path.
Ignore and do not log access info for paths that match regex
pub fn custom_request_replace(
self,
label: &str,
f: impl Fn(&ServiceRequest) -> String + 'static
) -> Self
pub fn custom_request_replace(
self,
label: &str,
f: impl Fn(&ServiceRequest) -> String + 'static
) -> Self
Register a function that receives a ServiceRequest and returns a String for use in the
log line. The label passed as the first argument should match a replacement substring in
the logger format like %{label}xi
.
It is convention to print “-” to indicate no output instead of an empty string.
Example
Logger::new("example %{JWT_ID}xi")
.custom_request_replace("JWT_ID", |req| parse_jwt_id(req.headers().get("Authorization")));
Trait Implementations
impl<S, B> Transform<S> for Logger where
S: Service<Request = ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
B: MessageBody,
impl<S, B> Transform<S> for Logger where
S: Service<Request = ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
B: MessageBody,
type Request = ServiceRequest
type Request = ServiceRequest
Requests handled by the service.
type Response = ServiceResponse<StreamLog<B>>
type Response = ServiceResponse<StreamLog<B>>
Responses given by the service.
type Transform = LoggerMiddleware<S>
type Transform = LoggerMiddleware<S>
The TransformService
value created by this factory
Creates and returns a new Transform component, asynchronously
fn map_init_err<F, E>(self, f: F) -> TransformMapInitErr<Self, S, F, E> where
F: Fn(Self::InitError) -> E + Clone,
fn map_init_err<F, E>(self, f: F) -> TransformMapInitErr<Self, S, F, E> where
F: Fn(Self::InitError) -> E + Clone,
Map this transforms’s factory error to a different error, returning a new transform service factory. Read more
Auto Trait Implementations
impl !RefUnwindSafe for Logger
impl !UnwindSafe for Logger
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more