Files
MediaCast4/core/logger.py
2026-01-12 10:48:20 +08:00

83 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# logger.py
import logging
import sys
from datetime import datetime
import os
class AppLogger:
"""
应用程序日志工具类
提供统一的日志记录功能
"""
def __init__(self, name='', log_level=logging.INFO, log_to_file=False, log_file_path=None):
"""
初始化日志记录器
Args:
name: 日志记录器名称
log_level: 日志级别
log_to_file: 是否记录到文件
log_file_path: 日志文件路径如果为None则使用默认路径
"""
self.logger = logging.getLogger(name)
# 避免重复添加处理器
if self.logger.handlers:
return
self.logger.setLevel(log_level)
# 创建格式化器
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# 创建控制台处理器
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(log_level)
console_handler.setFormatter(formatter)
self.logger.addHandler(console_handler)
# 如果需要记录到文件
if log_to_file:
if log_file_path is None:
# 创建logs目录
if not os.path.exists('logs'):
os.makedirs('logs')
# 生成日志文件名
timestamp = datetime.now().strftime('%Y%m%d')
log_file_path = f'logs/{timestamp}.log'
file_handler = logging.FileHandler(log_file_path, encoding='utf-8')
file_handler.setLevel(log_level)
file_handler.setFormatter(formatter)
self.logger.addHandler(file_handler)
def info(self, message):
"""记录信息级别日志"""
self.logger.info(message)
def debug(self, message):
"""记录调试级别日志"""
self.logger.debug(message)
def warning(self, message):
"""记录警告级别日志"""
self.logger.warning(message)
def error(self, message):
"""记录错误级别日志"""
self.logger.error(message)
def critical(self, message):
"""记录严重级别日志"""
self.logger.critical(message)
def set_level(self, level):
"""设置日志级别"""
self.logger.setLevel(level)
for handler in self.logger.handlers:
handler.setLevel(level)