Logging settings¶
- pydantic model horizon.backend.settings.server.log.LoggingSettings¶
Logging Settings.
Examples
Using
jsonpreset:HORIZON__SERVER__LOGGING__SETUP=True HORIZON__SERVER__LOGGING__PRESET=json
Passing custom logging config file:
HORIZON__SERVER__LOGGING__SETUP=True HORIZON__SERVER__LOGGING__CUSTOM_CONFIG_PATH=/some/logging.yml
Setup logging in some other way, e.g. using uvicorn args:
$ export HORIZON__SERVER__LOGGING__SETUP=False $ python -m horizon.backend --log-level debug
- Fields:
- field setup: bool = True¶
If
True, setup logging during application start
- field preset: Literal['json', 'plain', 'colored'] = 'plain'¶
Name of logging preset to use.
There are few logging presets bundled to
data-horizon[backend]package:plainpresetThis preset is recommended to use in environment which do not support colored output, e.g. CI jobs
# 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
coloredpresetThis preset is recommended to use in development environment, as it simplifies debugging. Each log record is output with color specific for a log level
# 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] %(correlation_id)s %(message)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
jsonpresetThis preset is recommended to use in production environment, as it allows to avoid writing complex log parsing configs. Each log record is output as JSON line
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
- field custom_config_path: Path | None = None¶
Path to custom logging configuration file. If set, overrides
presetvalue.File content should be in YAML format and conform logging.dictConfig.
- get_log_config_path() Path¶