Skip to content

Instantly share code, notes, and snippets.

@Niccolum
Created August 8, 2022 06:08
Show Gist options
  • Save Niccolum/779796275b89ea547bd62cf9e02ac136 to your computer and use it in GitHub Desktop.
Save Niccolum/779796275b89ea547bd62cf9e02ac136 to your computer and use it in GitHub Desktop.
from logging.config import dictConfig
LOG_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"filters": {
"require_debug_true": {
"()": "core.config.logging.filters.IsDebugMode",
},
"require_debug_false": {
"()": "core.config.logging.filters.IsNotDebugMode",
},
},
"formatters": {
"json": {
"()": "core.config.logging.formatter.JSONLogFormatter",
},
"simple": {
"()": "uvicorn.logging.DefaultFormatter",
"fmt": "%(levelprefix)s %(asctime)s %(module)s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
"access": {
"()": "uvicorn.logging.AccessFormatter",
"fmt": '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
"datefmt": "%Y-%m-%d %H:%M:%S",
},
"default": {
"()": "uvicorn.logging.DefaultFormatter",
"fmt": "%(levelprefix)s %(asctime)s %(name)s: %(module)s::%(funcName)s::LINE %(lineno)d %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"json": {
"formatter": "json",
"filters": ["require_debug_false"],
"class": "asynclog.AsyncLogDispatcher",
"func": print,
"thread_worker": 5,
},
"simple": {
"formatter": "simple",
"class": "logging.StreamHandler",
"stream": "ext://sys.stderr",
"filters": ["require_debug_true"],
},
"access": {
"formatter": "access",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
"filters": ["require_debug_true"],
},
"default": {
"formatter": "default",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
"filters": ["require_debug_true"],
},
},
"loggers": {
"uvicorn": {
"handlers": ["json", "simple"],
"level": "INFO",
"propagate": False,
},
"uvicorn.error": {
"handlers": ["json", "simple"],
"level": "INFO",
"propagate": False,
},
"uvicorn.access": {
"handlers": ["json", "access"],
"level": "ERROR",
"propagate": False,
},
"": {
"handlers": ["json", "default"],
"level": "INFO",
"propagate": False,
},
},
}
def logging_setup():
dictConfig(LOG_CONFIG)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment