ADD file via upload

main
pghfovyix 3 months ago
parent fa65722efa
commit de7f2b602e

@ -0,0 +1,75 @@
"""
统一的日志配置模块
"""
import logging
import logging.config
import yaml
import os
from pathlib import Path
def setup_logging(
config_path: str = None,
default_level: str = "INFO"
) -> logging.Logger:
"""
设置日志系统
Args:
config_path: 日志配置文件路径
default_level: 默认日志级别
Returns:
配置好的logger
"""
if config_path and os.path.exists(config_path):
try:
with open(config_path, 'r', encoding='utf-8') as f:
config = yaml.safe_load(f)
logging.config.dictConfig(config)
except Exception as e:
print(f"加载日志配置失败: {e}, 使用默认配置")
_setup_default_logging(default_level)
else:
_setup_default_logging(default_level)
return logging.getLogger(__name__)
def _setup_default_logging(level: str = "INFO"):
"""设置默认日志配置"""
log_dir = Path("logs")
log_dir.mkdir(exist_ok=True)
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
date_format = "%Y-%m-%d %H:%M:%S"
# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
console_formatter = logging.Formatter(log_format, date_format)
console_handler.setFormatter(console_formatter)
# 文件处理器
file_handler = logging.FileHandler(
log_dir / "toolorchestra.log",
encoding='utf-8'
)
file_handler.setLevel(level)
file_formatter = logging.Formatter(log_format, date_format)
file_handler.setFormatter(file_formatter)
# 根日志记录器
root_logger = logging.getLogger()
root_logger.setLevel(level)
root_logger.addHandler(console_handler)
root_logger.addHandler(file_handler)
class LogMixin:
"""日志混入类,为其他类提供日志功能"""
@property
def logger(self):
if not hasattr(self, '_logger'):
self._logger = logging.getLogger(
f"{self.__class__.__module__}.{self.__class__.__name__}"
)
return self._logger
Loading…
Cancel
Save