2017-08-10 53 views
0

我需要获取包含当前日期和时间的输出日志文件。在我的代码中,将创建5个日志文件。每个日志文件名都应该包含当前的日期和时间。我不想在我的代码中使用“TimedRotatingFileHandler”。但使用“RotatingFileHandler”,我不知道如何在文件名中添加时间和日期。以下是我试过到目前为止:如何将时间戳和日期添加到使用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

欢迎来到Stack Overflow!我编辑了您的问题以删除拼写和语法错误更容易让人理解你的问题,请你确保我没有扭曲意思,问题仍然是你想问的问题?你也可以考虑加入你的推理,使用'RotatingFileHandler'而不是' RimedRotatingFileHandler',这会让人们试图回答你的问题,提出一个更好的想法,可能的限制。 – jotasi

回答

0

当使用RotatingFileHandler,日志文件的文件名是固定的开始,在旋转的新日志文件时总是基于在开头的文件名。

只是指它的文档:

例如,具有5备份次数和基本文件名的“app.log”,你会得到“app.log”,“应用程序.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“等。

相关问题