1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| from loguru import logger import sys import os import logging
LOG_DIR = "logs" if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR)
CURRENT_DATE = "{time:YYYY-MM-DD}" LOG_PATH = os.path.join(LOG_DIR, CURRENT_DATE)
log_levels = { "DEBUG": "debug", "INFO": "info", "WARNING": "warning", "ERROR": "error", "CRITICAL": "critical" }
class InterceptHandler(logging.Handler): def emit(self, record): try: level = logger.level(record.levelname).name except ValueError: level = record.levelno
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() )
logger.remove()
logger.add(sys.stdout, level="DEBUG")
for level, folder in log_levels.items(): logger.add( os.path.join(LOG_DIR, CURRENT_DATE, folder, "spider_{time:YYYY-MM-DD_HH-mm-ss}.log"), rotation="500 B", retention=None, level=level, encoding="utf-8", filter=lambda record, l=level: record["level"].name == l )
logging.basicConfig(handlers=[InterceptHandler()], level=logging.DEBUG)
LOG_ENABLED = True LOG_LEVEL = 'DEBUG'
|