介绍
python使用flask后端开发,如何记录日志?要求按日期生成日志文件,并自动删除30天之前的日志文件,并且在其他文件可以很容易使用logger。
示例
可以使用Python标准库中的logging和logging.handlers模块来实现按日期生成日志文件,并自动删除30天之前的日志文件。
以下是一个示例代码,演示如何实现这个功能:
import logging
from logging.handlers import TimedRotatingFileHandler
import os
import datetime
def get_logger(logger_name, log_file_path):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
# 创建TimedRotatingFileHandler,按天分割日志文件
file_handler = TimedRotatingFileHandler(log_file_path, when='midnight', backupCount=30)
file_handler.setLevel(logging.DEBUG)
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 添加文件处理程序
logger.addHandler(file_handler)
# 添加控制台处理程序,可以选择是否添加
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
在这个示例中,我们定义了一个get_logger
函数,用于生成logger实例。该函数接受两个参数:logger_name和log_file_path。logger_name用于给logger命名,log_file_path用于指定日志文件的路径和名称。
在函数内部,我们首先创建了一个logger实例,并设置了日志级别为DEBUG。然后,我们创建了一个TimedRotatingFileHandler,用于按天分割日志文件。我们设置了when参数为‘midnight’,意思是每天午夜(0点)生成一个新的日志文件。backupCount参数设置为30,表示保留最近30天的日志文件。我们还设置了日志文件的级别为DEBUG,并将日志格式化为指定的格式。
最后,我们将文件处理程序添加到logger实例中,并选择性地添加控制台处理程序。如果不需要在控制台输出日志,可以省略控制台处理程序。
在其他文件中使用logger,可以在文件中先导入get_logger函数,然后调用该函数生成logger实例。例如:
from mylogger import get_logger
logger = get_logger('example', 'example.log')
logger.debug('Debug log')
logger.info('Info log')
logger.warning('Warning log')
logger.error('Error log')
logger.critical('Critical log')
在这个示例中,我们从mylogger模块中导入get_logger函数,然后使用该函数生成logger实例。我们可以使用logger实例记录各种级别的日志信息,这些日志信息将被写入到指定的日志文件中。