logging

class litestar.middleware.logging.LoggingMiddleware

基类:AbstractMiddleware

日志中间件。

__init__(app: ASGIApp, config: LoggingMiddlewareConfig) None

Initialize LoggingMiddleware.

参数:
  • app -- The next ASGI app to call.

  • config -- An instance of LoggingMiddlewareConfig.

async log_request(scope: Scope, receive: Receive) None

提取请求数据并记录消息。 Args: scope: ASGI 连接作用域。 receive: ASGI 接收可调用对象 Returns: None

log_response(scope: Scope) None

提取响应数据并记录消息。 Args: scope: ASGI 连接作用域。 Returns: None

log_message(values: dict[str, Any]) None

记录一条消息。 Args: values: 提取要记录的数值。 Returns: None

async extract_request_data(request: Request) dict[str, Any]

为消息创建值字典。 Args: request: 一个 Request 实例。 Returns: 一个 dict。

extract_response_data(scope: Scope) dict[str, Any]

从响应中提取数据。 Args: scope: ASGI 连接作用域。 Returns: 一个 dict。

create_send_wrapper(scope: Scope, send: Send) Send

创建一个 send 包装器,用于处理响应数据的日志记录。 Args: scope: ASGI 连接作用域。 send: ASGI send 函数。 Returns: 一个 ASGI send 函数。

class litestar.middleware.logging.LoggingMiddlewareConfig

基类:object

Configuration for LoggingMiddleware

exclude: str | list[str] | None = None

List of paths to exclude from logging.

exclude_opt_key: str | None = None

An identifier to use on routes to disable logging for a particular route.

include_compressed_body: bool = False

Include body of compressed response in middleware. If "body" not set in. response_log_fields this config value is ignored.

logger_name: str = 'litestar'

Name of the logger to retrieve using app.get_logger("<name>").

request_cookies_to_obfuscate: set[str]

Request cookie keys to obfuscate.

Obfuscated values are replaced with '*'.

request_headers_to_obfuscate: set[str]

Request header keys to obfuscate.

Obfuscated values are replaced with '*'.

response_cookies_to_obfuscate: set[str]

Response cookie keys to obfuscate.

Obfuscated values are replaced with '*'.

__init__(exclude: str | list[str] | None = None, exclude_opt_key: str | None = None, include_compressed_body: bool = False, logger_name: str = 'litestar', request_cookies_to_obfuscate: set[str] = <factory>, request_headers_to_obfuscate: set[str] = <factory>, response_cookies_to_obfuscate: set[str] = <factory>, response_headers_to_obfuscate: set[str] = <factory>, request_log_message: str = 'HTTP Request', response_log_message: str = 'HTTP Response', request_log_fields: Literal['path', 'method', 'content_type', 'headers', 'cookies', 'query', 'path_params', 'body', 'scheme', 'client']]=('path', 'method', 'content_type', 'headers', 'cookies', 'query', 'path_params', 'body'), response_log_fields: Literal['status_code', 'headers', 'body', 'cookies']]=('status_code', 'cookies', 'headers', 'body'), middleware_class: type[LoggingMiddleware] = <class 'litestar.middleware.logging.LoggingMiddleware'>) None
response_headers_to_obfuscate: set[str]

Response header keys to obfuscate.

Obfuscated values are replaced with '*'.

request_log_message: str = 'HTTP Request'

Log message to prepend when logging a request.

response_log_message: str = 'HTTP Response'

Log message to prepend when logging a response.

request_log_fields: Collection[Literal['path', 'method', 'content_type', 'headers', 'cookies', 'query', 'path_params', 'body', 'scheme', 'client']] = ('path', 'method', 'content_type', 'headers', 'cookies', 'query', 'path_params', 'body')

Fields to extract and log from the request.

备注

  • The order of fields in the iterable determines the order of the log message logged out.

    Thus, re-arranging the log-message is as simple as changing the iterable.

  • To turn off logging of requests, use and empty iterable.

response_log_fields: Collection[Literal['status_code', 'headers', 'body', 'cookies']] = ('status_code', 'cookies', 'headers', 'body')

Fields to extract and log from the response. The order of fields in the iterable determines the order of the log message logged out.

备注

  • The order of fields in the iterable determines the order of the log message logged out.

    Thus, re-arranging the log-message is as simple as changing the iterable.

  • To turn off logging of responses, use and empty iterable.

middleware_class

Middleware class to use.

Should be a subclass of [litestar.middleware.LoggingMiddleware].

LoggingMiddleware 的别名

__post_init__() None

Override default Pydantic type conversion for iterables.

参数:

value -- An iterable

返回:

The value argument cast as a tuple.

property middleware: DefineMiddleware

Use this property to insert the config into a middleware list on one of the application layers.

示例

from litestar import Litestar, Request, get
from litestar.logging import LoggingConfig
from litestar.middleware.logging import LoggingMiddlewareConfig

logging_config = LoggingConfig()

logging_middleware_config = LoggingMiddlewareConfig()


@get("/")
def my_handler(request: Request) -> None: ...


app = Litestar(
    route_handlers=[my_handler],
    logging_config=logging_config,
    middleware=[logging_middleware_config.middleware],
)
返回:

An instance of DefineMiddleware including self as the config kwarg value.