67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import sys
|
|
from pathlib import Path
|
|
from richuru import install
|
|
from loguru import logger
|
|
|
|
from .manager import config_manager
|
|
|
|
|
|
def setup_logger():
|
|
"""根据配置文件设置loguru日志"""
|
|
install()
|
|
settings = config_manager.get_settings()
|
|
log_config = settings.log
|
|
|
|
# 移除默认的logger配置
|
|
logger.remove()
|
|
|
|
# 确保日志目录存在
|
|
log_dir = Path(log_config.file_path).parent
|
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
# 设置控制台输出
|
|
if log_config.console_output:
|
|
logger.add(
|
|
sys.stderr,
|
|
format=log_config.format,
|
|
level=log_config.level.value,
|
|
backtrace=log_config.backtrace,
|
|
diagnose=log_config.diagnose,
|
|
)
|
|
|
|
# 设置主日志文件
|
|
logger.add(
|
|
log_config.file_path,
|
|
format=log_config.format,
|
|
level=log_config.level.value,
|
|
rotation=log_config.rotation,
|
|
retention=log_config.retention,
|
|
compression=log_config.compression,
|
|
backtrace=log_config.backtrace,
|
|
diagnose=log_config.diagnose,
|
|
)
|
|
|
|
# 设置额外的日志记录器
|
|
for extra_logger in log_config.additional_loggers:
|
|
# 确保额外日志目录存在
|
|
extra_log_dir = Path(extra_logger["file_path"]).parent
|
|
extra_log_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
logger.add(
|
|
extra_logger["file_path"],
|
|
format=log_config.format,
|
|
level=extra_logger.get("level", log_config.level.value),
|
|
rotation=extra_logger.get("rotation", log_config.rotation),
|
|
retention=extra_logger.get("retention", log_config.retention),
|
|
compression=extra_logger.get("compression", log_config.compression),
|
|
backtrace=log_config.backtrace,
|
|
diagnose=log_config.diagnose,
|
|
filter=extra_logger.get("filter"),
|
|
)
|
|
|
|
logger.info("日志系统初始化完成")
|
|
|
|
|
|
def get_logger():
|
|
"""获取配置好的logger实例"""
|
|
return logger |