可以基于python开发一个日志管理模块并删除前两天的日志吗
可以的,以下是一个基于Python开发的日志管理模块的示例代码,可以删除前两天的日志:
import logging
import os
import datetime
class LogManager:
def __init__(self, log_dir):
self.log_dir = log_dir
# 创建日志文件夹
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 创建日志记录器
self.logger = logging.getLogger()
self.logger.setLevel(logging.DEBUG)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)
self.logger.addHandler(console_handler)
# 创建文件处理器
file_handler = logging.FileHandler(os.path.join(log_dir, 'app.log'))
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)
self.logger.addHandler(file_handler)
def log(self, level, message):
if level == 'debug':
self.logger.debug(message)
elif level == 'info':
self.logger.info(message)
elif level == 'warning':
self.logger.warning(message)
elif level == 'error':
self.logger.error(message)
elif level == 'critical':
self.logger.critical(message)
else:
raise ValueError('Invalid log level')
def delete_old_logs(self, days_to_keep):
today = datetime.date.today()
delete_date = today - datetime.timedelta(days=days_to_keep)
for filename in os.listdir(self.log_dir):
file_path = os.path.join(self.log_dir, filename)
if os.path.isfile(file_path) and os.path.getmtime(file_path) < delete_date.timestamp():
os.remove(file_path)
# 示例用法
log_manager = LogManager('logs')
log_manager.log('info', 'This is an info log message')
log_manager.log('debug', 'This is a debug log message')
log_manager.log('warning', 'This is a warning log message')
log_manager.log('error', 'This is an error log message')
log_manager.delete_old_logs(2)
上述代码中,LogManager 类封装了日志管理的功能。你可以通过调用 log() 方法来记录日志,可以指定不同的日志级别(如 debug、info、warning、error、critical)。日志会同时输出到控制台和写入到文件中。
delete_old_logs() 方法用于删除指定天数之前的日志文件。你可以调用该方法并传入要保留的天数。
请注意,该示例仅提供一种实现方式,你可以根据自己的需求进行调整和改进
原文地址: http://www.cveoy.top/t/topic/hXE9 著作权归作者所有。请勿转载和采集!