Skip to content

Instantly share code, notes, and snippets.

@vncsna
Forked from AlonsoMackenlly/settings_logging.py
Last active September 24, 2023 19:01
Show Gist options
  • Save vncsna/d4645f9075167c13e8c85972fa003ee3 to your computer and use it in GitHub Desktop.
Save vncsna/d4645f9075167c13e8c85972fa003ee3 to your computer and use it in GitHub Desktop.
Loguru with Django
# Reference
# https://github.com/Delgan/loguru/issues/302
from logging import __file__, Handler, LogRecord, currentframe
from sys import stdout, stderr
class InterceptHandler(Handler):
def emit(self, record: LogRecord):
# Get corresponding Loguru level if it exists
try:
level = logger.level(record.levelname).name
except ValueError:
level = record.levelno
# Find caller from where originated the logged message
frame, depth = logging.currentframe(), 2
while frame.f_code.co_filename == logging.__file__:
frame = frame.f_back
depth += 1
logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'intercept': {
'()': InterceptHandler,
'level': 0,
},
},
'loggers': {
'': {
'handlers': ['intercept'],
'level': "DEBUG",
'propagate': True,
},
}
}
logger.remove()
logger.add(sys.stdout, level="DEBUG", backtrace=True)
logger.add("debug.log", level="DEBUG", rotation="30 MB", backtrace=True, retention="7 days")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment