温馨提示×

log函数python怎样进行日志归档

小樊
82
2024-08-24 00:51:34
栏目: 编程语言

在Python中,可以使用logging模块进行日志记录和归档。要实现日志归档,可以使用logging模块中的RotatingFileHandler或TimedRotatingFileHandler类。

下面是一个使用RotatingFileHandler实现日志归档的示例代码:

import logging
from logging.handlers import RotatingFileHandler

# 创建logger对象
logger = logging.getLogger("example")
logger.setLevel(logging.DEBUG)

# 创建RotatingFileHandler对象
handler = RotatingFileHandler("example.log", maxBytes=10000, backupCount=5)
handler.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# 将handler添加到logger对象中
logger.addHandler(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")

在上面的示例中,创建了一个logger对象,并使用RotatingFileHandler创建了一个RotatingFileHandler对象。这个RotatingFileHandler对象会将日志记录到example.log文件中,并在文件大小达到10KB时自动切割文件,最多保留5个旧日志文件。

除了RotatingFileHandler,还可以使用TimedRotatingFileHandler实现按时间归档日志文件。示例代码如下:

import logging
from logging.handlers import TimedRotatingFileHandler

# 创建logger对象
logger = logging.getLogger("example")
logger.setLevel(logging.DEBUG)

# 创建TimedRotatingFileHandler对象
handler = TimedRotatingFileHandler("example.log", when="midnight", interval=1, backupCount=5)
handler.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# 将handler添加到logger对象中
logger.addHandler(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")

在上面的示例中,创建了一个TimedRotatingFileHandler对象,它会在每天午夜切割日志文件并保留5个旧日志文件。

通过使用RotatingFileHandler或TimedRotatingFileHandler,可以实现日志的自动归档,确保日志文件不会无限增长。

0