我需要获取包含当前日期和时间的输出日志文件。在我的代码中,将创建5个日志文件。每个日志文件名都应包含当前日期和时间。我不想使用" TimedRotatingFileHandler"在我的代码中。但是使用" RotatingFileHandler",我不知道如何在文件名中添加时间和日期。这是我到目前为止所尝试的:
import time
import logging
from logging.handlers import RotatingFileHandler
from datetime import datetime
from logging import FileHandler
from time import strftime
now =datetime.now()
Filename= now.strftime('app_%H_%M_%d_%m_%Y.log')
log_formatter = logging.Formatter('[%(asctime)s][%(levelname)s](%(threadName)-10s) %(message)s')
logFile = 'D:/Tasks/1212/app'+ Filename
my_handler = RotatingFileHandler(logFile, mode='a', maxBytes=5*1024,
backupCount=5, encoding=None, delay=0)
my_handler.setFormatter(log_formatter)
my_handler.setLevel(logging.INFO)
app_log = logging.getLogger('root')
app_log.setLevel(logging.INFO)
app_log.addHandler(my_handler)
while True:
app_log.info("data")
time.sleep(1)
logging.shutdown
答案 0 :(得分:0)
使用RotatingFileHandler
时,日志文件的名称在开始时是固定的,而在旋转时,新日志文件始终基于开头的文件名。
请参考它的文档:
例如,如果备份计数为5,基本文件名为“app.log”,则会显示“app.log”,“app.log.1” ,“app.log.2”,...到“app.log.5”。 正在写入的文件始终是“app.log” - 当它被填满时,它会被关闭并重命名为“app.log.1”,如果是文件app.log.1“, “app.log.2”等存在,然后将它们重命名为“app.log.2”,“app.log.3”等。