Yolov/log.py

62 lines
1.7 KiB
Python

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