Yolov/log.py

62 lines
1.7 KiB
Python
Raw Normal View History

2025-12-11 13:41:07 +08:00
# log.py - 增强日志输出
2025-11-26 13:55:04 +08:00
import logging
from logging.handlers import RotatingFileHandler
2025-12-11 13:41:07 +08:00
import sys
2025-11-26 13:55:04 +08:00
2025-12-11 13:41:07 +08:00
# 在 log.py 中添加更详细的日志格式
2025-11-26 13:55:04 +08:00
def setup_logger():
"""优化日志系统 - 减少磁盘I/O"""
2025-12-16 10:08:12 +08:00
logger = logging.getLogger("YOLOv Optimized")
2025-12-11 13:41:07 +08:00
logger.setLevel(logging.DEBUG) # 改为DEBUG级别以查看更多信息
2025-11-26 13:55:04 +08:00
# 清除现有处理器
for handler in logger.handlers[:]:
logger.removeHandler(handler)
# 优化控制台日志格式
2025-12-11 13:41:07 +08:00
formatter = logging.Formatter(
'%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] %(message)s'
)
2025-11-26 13:55:04 +08:00
# 控制台处理器 - 设置较低的延迟
2025-12-11 13:41:07 +08:00
console_handler = logging.StreamHandler(sys.stdout)
2025-11-26 13:55:04 +08:00
console_handler.setFormatter(formatter)
2025-12-11 13:41:07 +08:00
console_handler.setLevel(logging.DEBUG)
2025-11-26 13:55:04 +08:00
# 文件处理器 - 限制日志大小和使用异步写入
log_file = 'yolo_detection.log'
file_handler = RotatingFileHandler(
log_file,
2025-12-11 13:41:07 +08:00
maxBytes=10 * 1024 * 1024, # 10MB
backupCount=5,
2025-11-26 13:55:04 +08:00
encoding='utf-8',
2025-12-11 13:41:07 +08:00
delay=False
2025-11-26 13:55:04 +08:00
)
file_handler.setFormatter(formatter)
2025-12-11 13:41:07 +08:00
file_handler.setLevel(logging.INFO)
2025-11-26 13:55:04 +08:00
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# 禁用不需要的库的日志
logging.getLogger("werkzeug").setLevel(logging.WARNING)
logging.getLogger("engineio").setLevel(logging.WARNING)
logging.getLogger("socketio").setLevel(logging.WARNING)
2025-12-11 13:41:07 +08:00
# 设置其他库的日志级别
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("requests").setLevel(logging.WARNING)
# 设置任务管理器的日志级别
logging.getLogger("task_manager").setLevel(logging.DEBUG)
2025-11-26 13:55:04 +08:00
return logger
logger = setup_logger()