Faceswaper / loggers.py
Lucas Hansen
Create loggers.py
99210cc verified
import logging
from logging.config import dictConfig
from contextvars import ContextVar
request_id: ContextVar[str] = ContextVar('request_id', default='')
request_session: ContextVar[dict] = ContextVar('request_session', default={})
# import logging
class RequestIDFilter(logging.Filter):
def filter(self, record: logging.LogRecord) -> bool:
record.request_id = request_id.get()
return True
log_config = {
"disable_existing_loggers": False,
'version': 1,
'formatters': {
'default': {
'format': '[%(asctime)s] %(levelname)s %(pathname)s %(module)s %(lineno)d -> %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S %z'
}},
'handlers': {'console': {
'class': 'logging.StreamHandler',
'formatter': 'default',
"stream": "ext://sys.stdout"
}},
"loggers": {
'root': {
'level': 'INFO',
'handlers': ['console']
}
}
}
log_config = {
"version": 1,
"disable_existing_loggers": False,
'filters': {
'request_id_filter': {
"()": RequestIDFilter
}
},
"formatters": {
'access': {
'()': 'uvicorn.logging.AccessFormatter',
'fmt': '[%(asctime)s] [%(request_id)s] %(levelprefix)s - %(client_addr)s - "%(request_line)s" %(status_code)s',
"datefmt": "%Y-%m-%d %H:%M:%S %z",
"use_colors": True
},
"default": {
"()": "uvicorn.logging.DefaultFormatter",
'fmt': '[%(asctime)s] [%(request_id)s] %(levelname)s %(pathname)s %(module)s %(lineno)d -> %(message)s',
# 'fmt': '[%(asctime)s] %(levelname)s %(pathname)s %(module)s %(lineno)d -> %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S %z',
"use_colors": True
},
},
"handlers": {
'access': {
'class': 'logging.StreamHandler',
'formatter': 'access',
'stream': 'ext://sys.stdout',
"filters": ['request_id_filter']
},
"default": {
"formatter": "default",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
"filters": ['request_id_filter']
},
},
"loggers": {
"log": {
"handlers": ["default"],
"level": "INFO",
"propagate": False
},
"uvicorn": {
"handlers": ["default"],
"level": "INFO",
"propagate": True
},
'uvicorn.access': {
'handlers': ['access'],
'level': 'INFO',
'propagate': False
},
'uvicorn.error': {
'level': 'INFO',
'propagate': False
}
},
}
dictConfig(log_config)
logger = logging.getLogger("log")