我对Python日志(log)记录还是个新手.我想知道有没有办法保存最后的n个日志(log)文件.这是我的配置:

import logging
logging.basicConfig(
    filename = "logs/log.log",
    filemode = "w",
    encoding = "utf-8",
    force = True,
    level = logging.INFO,
    format = "%(asctime)s %(levelname) -8s %(message)s",
    datefmt = "%Y-%m-%d %H:%M:%S"
)

比方说,我想保留10个日志(log)文件.当要生成第11个文件时,第1个文件将自动删除.

有没有办法直接做到这一点,或者我必须实现我自己的函数?

推荐答案

您可以使用backupCount参数来实现这一点,如下所示.

文件大小旋转处理机

log_formatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s",
                                  datefmt="%Y-%m-%d %H:%M:%S")  # your logging format
log_handler = RotatingFileHandler("logss/log.log", mode="a", maxBytes=1024, backupCount=10, encoding="utf-8")
log_handler.setFormatter(log_formatter)

logger = logging.getLogger()
logger.setLevel(logging.INFO)  # set logging level
logger.addHandler(log_handler)

上述日志(log)处理程序将保留当前日志(log)文件(log.log)和最多10个历史日志(log)文件(因为backupCount=10).一旦当前日志(log)文件达到指定的大小(在本例中为MaxBytes=1024),它将创建一个新的日志(log)文件,并仅维护最后10个日志(log)文件,删除较旧的日志(log)文件.

时间旋转处理机

log_formatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
log_handler = TimedRotatingFileHandler("logs/log.log", when="M", interval=1, backupCount=10, encoding="utf-8")
log_handler.suffix = "%Y-%m-%d_%H-%M.log"
log_handler.setFormatter(log_formatter)

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(log_handler)

上述日志(log)处理程序将保留当前日志(log)文件(log.log)和最多10个历史日志(log)文件(因为backupCount=10).它将根据时间间隔when="M"(每分钟轮换一次)、interval=1(每分钟轮换一次)和backupCount=10(保留10个日志(log)文件)来轮换文件.这个时间段你可以根据你的要求改变它.

Python相关问答推荐

是否有使用纯霍夫曼编码的现代图像格式?

Python-Polars:如何用两个值的平均值填充NA?

如何分割我的收件箱,以便连续的数字各自位于自己的收件箱中?

如果在第一行之前不存在其他条件,如何获得满足口罩条件的第一行?

如何以实现以下所述的预期行为的方式添加两只Pandas pyramme

将列表中的元素替换为收件箱中的元素

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

遵循轮廓中对象方向的计算线

如何使用上下文管理器创建类的实例?

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

滚动和,句号来自Pandas列

try 在树叶 map 上应用覆盖磁贴

什么相当于pytorch中的numpy累积ufunc

图像 pyramid .难以创建所需的合成图像

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

以逻辑方式获取自己的pyproject.toml依赖项

OpenGL仅渲染第二个三角形,第一个三角形不可见