| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import os
- import logging
- import inspect
- from colorama import Fore, Style, init
- current_dir = os.path.dirname(os.path.abspath(__file__))
- log_path = os.path.join(current_dir, '..', 'logs', 'order_fusion.log')
- init(autoreset=True)
- class ColoredFormatter(logging.Formatter):
- COLORS = {
- 'DEBUG': Fore.CYAN,
- 'INFO': Fore.GREEN,
- 'WARNING': Fore.YELLOW,
- 'ERROR': Fore.RED,
- 'CRITICAL': Fore.RED + Style.BRIGHT,
- }
- def format(self, record):
- levelname = record.levelname
- # 添加文件名和行号到日志记录
- record.filename = os.path.basename(record.pathname) # 仅显示文件名
- record.location = f"{record.filename}:{record.lineno}"
-
- if levelname in self.COLORS:
- color = self.COLORS[levelname]
- record.levelname = f"{color}{levelname}{Style.RESET_ALL}"
- record.msg = f"{color}{record.msg}{Style.RESET_ALL}"
- return super().format(record)
- def setup_logger(name):
- # 配置日志
- logger = logging.getLogger(name)
- logger.setLevel(logging.DEBUG)
- # 创建控制台处理器
- console_handler = logging.StreamHandler()
- console_handler.setLevel(logging.DEBUG)
- # 创建文件处理器
- file_handler = logging.FileHandler(log_path, encoding='utf-8')
- file_handler.setLevel(logging.DEBUG)
- # 创建格式化器 - 添加详细位置信息 [文件名:行号]
- console_formatter = ColoredFormatter(
- '%(asctime)s - %(levelname)s - [%(location)s] %(funcName)s() - %(message)s'
- )
-
- # 文件处理器使用非彩色格式
- file_formatter = logging.Formatter(
- '%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] %(funcName)s() - %(message)s'
- )
- console_handler.setFormatter(console_formatter)
- file_handler.setFormatter(file_formatter)
- # 将处理器添加到日志记录器
- logger.addHandler(console_handler)
- logger.addHandler(file_handler)
- return logger
|