jbi/log.py (45 lines of code) (raw):
"""
Dedicated module for logging configuration and setup
"""
import logging
import logging.config
import sys
from jbi.environment import get_settings
settings = get_settings()
CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"filters": {
"request_id": {
"()": "dockerflow.logging.RequestIdLogFilter",
},
},
"formatters": {
"mozlog_json": {
"()": "dockerflow.logging.JsonLogFormatter",
"logger_name": "jbi",
},
"text": {
"format": "%(asctime)s %(levelname)-8s [%(rid)s] %(name)-15s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"level": settings.log_level.upper(),
"class": "logging.StreamHandler",
"filters": ["request_id"],
"formatter": "text"
if settings.log_format.lower() == "text"
else "mozlog_json",
"stream": sys.stdout,
},
"null": {
"class": "logging.NullHandler",
},
},
"loggers": {
"": {"handlers": ["console"]},
"request.summary": {"level": logging.INFO},
"jbi": {"level": logging.DEBUG},
"uvicorn": {"level": logging.INFO},
"uvicorn.access": {"handlers": ["null"], "propagate": False},
},
}