data_factory/utils/logger_utils.py

67 lines
2.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2025/3/18 13:07
# @Author : AngesZhu
# @File : logger_utils.py
# @Desc : 日志相关操作封装
import os
from loguru import logger
from datetime import datetime
class LoggerManager:
def __init__(self, log_dir="../logs", retention="7 days", rotation="10 MB"):
"""
初始化日志管理器。
:param log_dir: 日志文件夹路径,默认为 "logs"
:param retention: 日志保留时间,默认为 "7 days"
:param rotation: 日志文件大小限制,默认为 "10 MB"
"""
self.log_dir = log_dir
self.retention = retention
self.rotation = rotation
# 确保日志文件夹存在
os.makedirs(self.log_dir, exist_ok=True)
# 配置日志
self.configure_logger()
def configure_logger(self):
"""
配置 loguru 日志记录器。
"""
# 定义日志文件名格式(按天生成)
log_file_name = f"{datetime.now().strftime('%Y-%m-%d')}_info.log"
log_file_path = os.path.join(self.log_dir, log_file_name)
# 添加日志处理器
logger.add(
log_file_path,
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}", # 标准化日志格式
rotation=self.rotation, # 文件大小限制
retention=self.retention, # 日志保留时间
compression="zip", # 压缩旧日志文件
enqueue=True, # 支持多线程安全
encoding="utf-8" # 编码格式
)
def get_logger(self):
"""
获取日志记录器实例。
:return: loguru.logger 实例
"""
return logger
# 创建全局日志记录器实例
logger_manager = LoggerManager()
logger = logger_manager.get_logger()
# 记录日志
# logger.debug("这是一个调试信息")
# logger.info("这是一个普通信息")
# logger.warning("这是一个警告信息")
# logger.error("这是一个错误信息")
# logger.critical("这是一个严重错误信息")
__all__ = ["logger"]