log函數(shù)python的日志輪轉(zhuǎn)實(shí)現(xiàn)

小樊
91
2024-08-24 01:02:33

在Python中,可以使用logging模塊來(lái)實(shí)現(xiàn)日志的輪轉(zhuǎn)。日志輪轉(zhuǎn)是指在日志文件達(dá)到一定大小或者時(shí)間間隔時(shí),自動(dòng)將日志文件重命名并創(chuàng)建一個(gè)新的日志文件來(lái)繼續(xù)記錄日志。以下是一個(gè)簡(jiǎn)單的示例代碼,演示了如何在Python中實(shí)現(xiàn)日志輪轉(zhuǎn)。

import logging
from logging.handlers import RotatingFileHandler

# 創(chuàng)建一個(gè)logger對(duì)象
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 創(chuàng)建一個(gè)RotatingFileHandler對(duì)象,用于處理日志輪轉(zhuǎn)
log_handler = RotatingFileHandler('my_log.log', maxBytes=10000, backupCount=2)
log_handler.setLevel(logging.DEBUG)

# 設(shè)置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
log_handler.setFormatter(formatter)

# 將handler對(duì)象添加到logger對(duì)象
logger.addHandler(log_handler)

# 記錄日志
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

在上面的示例中,我們首先創(chuàng)建了一個(gè)logger對(duì)象,并設(shè)置了其級(jí)別為DEBUG。然后創(chuàng)建了一個(gè)RotatingFileHandler對(duì)象,指定了日志文件名為my_log.log,并設(shè)置了最大文件大小為10000字節(jié),備份文件數(shù)量為2個(gè)。接著設(shè)置了日志格式并將handler對(duì)象添加到logger對(duì)象中。最后使用logger對(duì)象記錄了不同級(jí)別的日志消息。

當(dāng)日志文件大小達(dá)到指定大小時(shí),RotatingFileHandler會(huì)自動(dòng)將當(dāng)前日志文件重命名為備份文件,并創(chuàng)建一個(gè)新的日志文件繼續(xù)記錄日志。備份文件數(shù)量限制了可以保留的備份文件數(shù)量,超出指定數(shù)量的備份文件會(huì)被刪除。

0