51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
|
import logging
|
|||
|
import os
|
|||
|
from logging.handlers import RotatingFileHandler
|
|||
|
|
|||
|
def setup_logging():
|
|||
|
# 创建logs目录(如果不存在)
|
|||
|
log_dir = 'logs'
|
|||
|
if not os.path.exists(log_dir):
|
|||
|
os.makedirs(log_dir)
|
|||
|
|
|||
|
# 配置根日志记录器
|
|||
|
root_logger = logging.getLogger()
|
|||
|
|
|||
|
# 如果已经有handlers,先移除它们以防重复
|
|||
|
if root_logger.handlers:
|
|||
|
for handler in root_logger.handlers[:]:
|
|||
|
root_logger.removeHandler(handler)
|
|||
|
|
|||
|
root_logger.setLevel(logging.INFO)
|
|||
|
|
|||
|
# 创建格式化器
|
|||
|
formatter = logging.Formatter(
|
|||
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|||
|
)
|
|||
|
|
|||
|
# 创建文件处理器
|
|||
|
file_handler = RotatingFileHandler(
|
|||
|
os.path.join(log_dir, 'app.log'),
|
|||
|
maxBytes=10*1024*1024, # 10MB
|
|||
|
backupCount=5
|
|||
|
)
|
|||
|
file_handler.setLevel(logging.INFO)
|
|||
|
file_handler.setFormatter(formatter)
|
|||
|
|
|||
|
# 创建控制台处理器
|
|||
|
console_handler = logging.StreamHandler()
|
|||
|
console_handler.setLevel(logging.INFO)
|
|||
|
console_handler.setFormatter(formatter)
|
|||
|
|
|||
|
# 添加处理器到根日志记录器
|
|||
|
root_logger.addHandler(file_handler)
|
|||
|
root_logger.addHandler(console_handler)
|
|||
|
|
|||
|
# 设置propagate=False以防止日志消息向上传播
|
|||
|
for logger_name in logging.root.manager.loggerDict:
|
|||
|
logger = logging.getLogger(logger_name)
|
|||
|
logger.propagate = False
|
|||
|
|
|||
|
return root_logger
|
|||
|
|
|||
|
logger = setup_logging()
|