logger.py
"""
QTrading 日志模块
"""
import logging
import os
from logging.handlers import RotatingFileHandler
def get_logger(name: str, log_file: str = None, level: int = logging.INFO) -> logging.Logger:
"""
获取日志记录器
Args:
name: 日志器名称
log_file: 日志文件路径(可选,默认不保存到文件)
level: 日志级别(默认 INFO)
Returns:
logging.Logger: 日志记录器实例
"""
logger = logging.getLogger(name)
logger.setLevel(level)
logger.handlers.clear()
# 控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
console_formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# 文件输出
if log_file:
log_dir = os.path.dirname(log_file)
if log_dir and not os.path.exists(log_dir):
os.makedirs(log_dir)
file_handler = RotatingFileHandler(
log_file,
maxBytes=10 * 1024 * 1024,
backupCount=5,
encoding='utf-8'
)
file_handler.setLevel(level)
file_formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
return logger