使用logging模块实现日志的归档与轮换
发布时间:2023-12-17 08:01:45
使用logging模块实现日志的归档与轮换可以通过设置logging的handlers,其中常用的有FileHandler和TimedRotatingFileHandler两种。
首先,需要导入logging模块:
import logging
然后,可以通过以下代码配置logger和handler,并设置日志的归档和轮换:
# 配置日志输出级别和格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 创建logger
logger = logging.getLogger('my_logger')
# 创建FileHandler,并设置日志文件名、归档方式和编码
file_handler = logging.handlers.TimedRotatingFileHandler('my_log.log', when='midnight', backupCount=7, encoding='utf-8')
# 设置日志文件的输出格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 将handler添加到logger中
logger.addHandler(file_handler)
# 输出日志信息
logger.info('This is a log message.')
以上代码中,首先使用basicConfig方法设置了全局的日志级别和格式,其中级别为INFO,格式为'[时间戳] - [日志级别] - [日志信息]'。
然后通过getLogger方法创建了一个名为'my_logger'的logger对象。
接着,使用TimedRotatingFileHandler创建了一个名为'my_log.log'的日志文件,并设置了归档方式为'midnight'(每天凌晨归档一次)、备份文件的数量为7个以及编码为utf-8。
此外,还设置了日志文件的输出格式为'[时间戳] - [日志级别] - [日志信息]'。
最后,将handler添加到logger中,并使用logger的info方法输出日志信息。
通过上述配置,可以实现每天凌晨归档一次日志,并保留最近7天的备份文件。
除了TimedRotatingFileHandler,还可以使用其他handler实现不同的日志轮换方式,例如:
- RotatingFileHandler:根据文件大小轮换日志文件。
- WatchedFileHandler:基于文件系统事件(如文件大小或修改时间)轮换日志文件。
- SocketHandler:将日志发送到指定的套接字。
以上是使用logging模块实现日志的归档与轮换的示例,可以根据实际需求选择不同的handler并进行配置。
