beerds/server/infra/logger/__init__.py

77 lines
2.1 KiB
Python

"""The logger configuration"""
import logging
from logging import config as log_config
from server import config
cnf = config.get_app_config()
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": True,
"formatters": {
"standard": {
"use_colors": True,
"format": "%(filename)s:%(lineno)d -> %(asctime)s [%(levelname)s]: %(message)s",
},
"uvicorn_default": {
"()": "uvicorn.logging.DefaultFormatter",
"format": "%(levelprefix)s %(message)s",
"use_colors": True,
},
"uvicorn_access": {
"()": "uvicorn.logging.AccessFormatter",
"format": '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s', # noqa: E501
},
},
"handlers": {
"default": {
"level": cnf.log_level,
"formatter": "standard",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
},
"sentry": {
"level": "ERROR",
"class": "sentry_sdk.integrations.logging.EventHandler",
},
"uvicorn_default": {
"level": "INFO",
"formatter": "uvicorn_default",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
},
"uvicorn_access": {
"level": "INFO",
"formatter": "uvicorn_access",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
},
},
"loggers": {
"": {"handlers": ["default"], "level": cnf.log_level, "propagate": False},
"uvicorn.access": {
"handlers": ["uvicorn_access"],
"level": "INFO",
"propagate": False,
},
"uvicorn.error": {
"handlers": ["uvicorn_default"],
"level": "INFO",
"propagate": False,
},
"uvicorn.asgi": {
"handlers": ["uvicorn_default"],
"level": "INFO",
"propagate": False,
},
},
}
def get_logger() -> logging.Logger:
log_config.dictConfig(LOGGING_CONFIG)
return logging.getLogger()