# Source - https://stackoverflow.com/a # Posted by Chris, modified by community. See post 'Timeline' for change history # Retrieved 2026-01-24, License - CC BY-SA 4.0 import logging LOGGING_CONFIG = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(levelname)-7s][%(name)-24s]: %(message)s' }, }, 'handlers': { 'default': { 'formatter': 'standard', 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stdout', # Default is stderr }, 'stream_handler': { 'formatter': 'standard', 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stdout', # Default is stderr }, 'file_handler': { 'formatter': 'standard', 'class': 'logging.handlers.RotatingFileHandler', 'filename': 'app.log', 'maxBytes': 1024 * 1024 * 1, # = 1MB 'backupCount': 3, }, }, 'loggers': { 'uvicorn': { 'handlers': ['default', 'file_handler'], 'level': 'TRACE', 'propagate': False }, 'uvicorn.access': { 'handlers': ['stream_handler', 'file_handler'], 'level': 'TRACE', 'propagate': False }, 'uvicorn.error': { 'handlers': ['stream_handler', 'file_handler'], 'level': 'TRACE', 'propagate': False }, 'uvicorn.asgi': { 'handlers': ['stream_handler', 'file_handler'], 'level': 'TRACE', 'propagate': False }, }, } def get_worker_thread_logger() -> logging.Logger: logger = logging.getLogger("uvicorn").getChild("build_thread") return logger