| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- import logging
 
- import sys
 
- from loguru import logger
 
- from config.logging import settings
 
- def register(app=None):
 
-     level = settings.LOG_LEVEL
 
-     path = settings.LOG_PATH
 
-     retention = settings.LOG_RETENTION
 
-     # intercept everything at the root logger
 
-     logging.root.handlers = [InterceptHandler()]
 
-     logging.root.setLevel(level)
 
-     # remove every other logger's handlers
 
-     # and propagate to root logger
 
-     for name in logging.root.manager.loggerDict.keys():
 
-         logging.getLogger(name).handlers = []
 
-         logging.getLogger(name).propagate = True
 
-     # configure loguru
 
-     logger.configure(
 
-         handlers=[
 
-             {"sink": sys.stdout},
 
-             {"sink": path, "rotation": "00:00", "retention": retention},
 
-         ]
 
-     )
 
- class InterceptHandler(logging.Handler):
 
-     def emit(self, record):
 
-         # 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())
 
 
  |