pra*_*ect 7 python debugging logging
我一直在做研究,我很难完成我希望实现的目标.目前,这就是我所拥有的(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
Run Code Online (Sandbox Code Playgroud)
它目前成功打印到控制台和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).谢谢!
zwe*_*wer 16
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...
Run Code Online (Sandbox Code Playgroud)
应该像魅力一样工作.