logo

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

Create Logger middleware with the specified format.

Ignore and do not log access info for specified path.

Ignore and do not log access info for paths that match regex

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

Create Logger middleware with format:

%a "%r" %s %b "%{Referer}i" "%{User-Agent}i" %T

Requests handled by the service.

Responses given by the service.

Errors produced by the service.

Errors produced while building a transform service.

The TransformService value created by this factory

The future response value.

Creates and returns a new Transform component, asynchronously

Map this transforms’s factory error to a different error, returning a new transform service factory. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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