Skip to content

Logging settings

LoggingSettings

Python logging configuration.

See logging.config docs.

Logging to stdout with colored text:

config.yml
logging:
    # development usage only
    version: 1
    disable_existing_loggers: false

    filters:
        # Add request ID as extra field named `correlation_id` to each log record.
        # This is used in combination with settings.server.request_id.enabled=True
        # See https://github.com/snok/asgi-correlation-id#configure-logging
        correlation_id:
            (): asgi_correlation_id.CorrelationIdFilter
            uuid_length: 32
            default_value: '-'

    formatters:
        colored:
            (): coloredlogs.ColoredFormatter
            # Add correlation_id to log records
            fmt: '%(asctime)s.%(msecs)03d %(processName)s:%(process)d %(name)s:%(lineno)d [%(levelname)s] %(message)s %(correlation_id)s'
            datefmt: '%Y-%m-%d %H:%M:%S'

    handlers:
        main:
            class: logging.StreamHandler
            formatter: colored
            filters: [correlation_id]
            stream: ext://sys.stdout

    loggers:
        '':
            handlers: [main]
            level: INFO
            propagate: false
        uvicorn:
            handlers: [main]
            level: INFO
            propagate: false
Logging to stdout without colored text:

config.yml
logging:
    # development usage only
    version: 1
    disable_existing_loggers: false

    filters:
        # Add request ID as extra field named `correlation_id` to each log record.
        # This is used in combination with settings.server.request_id.enabled=True
        # See https://github.com/snok/asgi-correlation-id#configure-logging
        correlation_id:
            (): asgi_correlation_id.CorrelationIdFilter
            uuid_length: 32
            default_value: '-'

    formatters:
        plain:
            (): logging.Formatter
            # Add correlation_id to log records
            fmt: '%(asctime)s.%(msecs)03d %(processName)s:%(process)d %(name)s:%(lineno)d [%(levelname)s] %(correlation_id)s %(message)s'
            datefmt: '%Y-%m-%d %H:%M:%S'

    handlers:
        main:
            class: logging.StreamHandler
            formatter: plain
            filters: [correlation_id]
            stream: ext://sys.stdout

    loggers:
        '':
            handlers: [main]
            level: INFO
            propagate: false
        uvicorn:
            handlers: [main]
            level: INFO
            propagate: false
Logging to stdout in JSON format:

config.yml
logging:
    version: 1
    disable_existing_loggers: false

    filters:
        # Add request ID as extra field named `correlation_id` to each log record.
        # This is used in combination with settings.server.request_id.enabled=True
        # See https://github.com/snok/asgi-correlation-id#configure-logging
        correlation_id:
            (): asgi_correlation_id.CorrelationIdFilter
            uuid_length: 32
            default_value: '-'

    formatters:
        json:
            (): pythonjsonlogger.jsonlogger.JsonFormatter
            # Add correlation_id to log records
            fmt: '%(processName)s %(process)d %(threadName)s %(thread)d %(name)s %(lineno)d %(levelname)s %(message)s %(correlation_id)s'
            timestamp: true

    handlers:
        main:
            class: logging.StreamHandler
            formatter: json
            filters: [correlation_id]
            stream: ext://sys.stdout

    loggers:
        '':
            handlers: [main]
            level: INFO
            propagate: false
        uvicorn:
            handlers: [main]
            level: INFO
            propagate: false

Parameters:

  • version

    (Literal[1], default: 1 ) –

    Configuration schema version

  • formatters

    (dict[str, FormatterConfig | CallableFactoryConfig], default: <class 'dict'> ) –

    Logging formatters

  • filters

    (dict[str, FilterConfig | CallableFactoryConfig], default: <class 'dict'> ) –

    Logging filters

  • handlers

    (dict[str, StreamHandlerConfig | FileHandlerConfig | WatchedFileHandlerConfig | RotatingFileHandlerConfig | TimedRotatingFileHandlerConfig | SocketHandlerConfig | DatagramHandlerConfig | SysLogHandlerConfig | NTEventLogHandlerConfig | SMTPHandlerConfig | MemoryHandlerConfig | HTTPHandlerConfig | QueueHandlerConfig | QueueListenerConfig | BaseHandlerConfig | CallableFactoryConfig], default: <class 'dict'> ) –

    Logging handlers

  • loggers

    (dict[str, LoggerConfig], default: <class 'dict'> ) –

    Logger configurations

  • root

    (RootLoggerConfig | None, default: None ) –

    Root logger configuration

  • incremental

    (bool, default: False ) –

    Whether configuration is incremental

  • disable_existing_loggers

    (bool, default: True ) –

    Disable existing loggers