loguru logger customizing

  1. create logger

    import datetime
    import os
    import logging
    from loguru import logger

    script_root_dir= os.path.dirname(os.path.abspath(__file__))
    logger.add(f'{}\mylog\app_running_{datatime.datetime.now().strftime(“%Y%m%d%H%M”)}.log’,
    rotation=”50MB”, encoding=”utf-8″, enqueue=True,retention=”15days”)

  2. sink other libs log info
    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())
    

    logging.basicConfig(handlers=[InterceptHandler()], level=logging.INFO)