为了创建一个Python类来管理日志,并使其支持按日期分割日志文件(每天一个新的日志文件),你可以使用Python标准库中的logging
模块和logging.handlers.TimedRotatingFileHandler
。下面是一个简单的示例,展示了如何实现这个需求。
首先,你需要安装Python(如果尚未安装)。然后,可以创建一个名为log_manager.py
的Python文件,并在其中定义你的日志管理类。
python">import logging
from logging.handlers import TimedRotatingFileHandler
import osclass LogManager:def __init__(self, log_dir, log_name):"""初始化日志管理器:param log_dir: 日志文件存储的目录:param log_name: 日志文件的基本名称,日期会被追加到文件名中"""self.log_dir = log_dirself.log_name = log_nameself.setup_logger()def setup_logger(self):"""配置并启动日志记录器"""# 确保日志目录存在if not os.path.exists(self.log_dir):os.makedirs(self.log_dir)# 创建日志记录器self.logger = logging.getLogger(self.log_name)self.logger.setLevel(logging.DEBUG) # 可以根据需要调整日志级别# 创建一个handler,用于写入日志文件,每天滚动一次log_file_path = os.path.join(self.log_dir, self.log_name + ".log")handler = TimedRotatingFileHandler(log_file_path, when="midnight", backupCount=7)# 创建日志格式formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)# 给logger添加handlerself.logger.addHandler(handler)def debug(self, message):"""记录调试信息"""self.logger.debug(message)def info(self, message):"""记录普通信息"""self.logger.info(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)# 使用示例
if __name__ == "__main__":log_manager = LogManager("/path/to/your/logs", "myapp")log_manager.info("This is an info message.")log_manager.warning("This is a warning message.")
在上面的代码中,LogManager
类负责设置和管理日志记录器。它使用TimedRotatingFileHandler
来确保日志文件每天滚动一次,并且只保留最近的7个日志文件(通过backupCount=7
设置)。
- 你需要将
"/path/to/your/logs"
替换为你希望存储日志文件的实际路径。 log_name
是你希望日志文件使用的基本名称,日期和时间戳会被自动添加到文件名中。
这样,你就可以在你的程序中的任何位置通过实例化LogManager
类并调用其方法来记录日志了,而无需担心日志文件的创建、滚动和删除问题。