gpt4 book ai didi

python - 如何在应用程序每次运行时创建一个新的日志文件?

转载 作者:太空狗 更新时间:2023-10-29 22:08:52 24 4
gpt4 key购买 nike

目前,这是我拥有的(teSTLog.py):

import logging
import logging.handlers

filename = "example.log"

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

handler = logging.handlers.RotatingFileHandler(filename, mode = 'w', backupCount = 5)
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
logger.addHandler(handler)

ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)

for i in range(10):
logger.debug("testx") #where I alternate x from 1 thru 9 to see output

它目前已成功打印到控制台和 example.log,这正是我想要的。

每次我运行它时,它都会创建一个新文件并替换旧的 example.log,如下所示:

  • 运行 logger.debug("test1") - example.log 将包含 test1 10 次。

  • 运行 logger.debug("test2") - 它重写 example.log 以包含 test2 10 次。

  • 等...

但是,我希望代码在每次运行程序时都生成一个新的日志文件,这样我就可以:

example.log
example.log1
example.log2
...
example.log5

总而言之,我希望这个文件能够将日志消息打印到控制台、日志文件,并且我希望在每次运行该程序时都有一个新的日志文件(最多 *.5)。

最佳答案

logging.handlers.RotatingFileHandler根据大小或日期轮换日志,但您可以使用 RotatingFileHandler.doRollover() 强制它轮换所以像这样:

import logging.handlers
import os

filename = "example.log"

# your logging setup

should_roll_over = os.path.isfile(filename)
handler = logging.handlers.RotatingFileHandler(filename, mode='w', backupCount=5)
if should_roll_over: # log already exists, roll over!
handler.doRollover()

# the rest of your setup...

应该像魅力一样工作。

关于python - 如何在应用程序每次运行时创建一个新的日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com