当我创建日志文件时,我希望名称包含日期时间。
现在,在python中,您可以将当前日期时间设置为:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2012, 2, 3, 21, 35, 9, 559000)
str版本是
>>> str(datetime.now())
'2012-02-03 21:35:22.247000'
附加到日志文件名称不是一个非常好的str!我希望我的日志文件类似于:
mylogfile_21_35_03_02_2012.log
python可以做些什么来让这很容易吗?请注意,我正在创建日志文件
fh = logging.FileHandler("mylogfile" + datetimecomp + ".log")
任何提示?
答案 0 :(得分:33)
您还可以使用TimedRotatingFileHandler
来处理日期和每日翻转(或者您想要的任何时间)。
from logging.handlers import TimedRotatingFileHandler
fh = TimedRotatingFileHandler('mylogfile', when='midnight')
默认情况下,格式取决于翻转间隔:
系统将通过附加文件名扩展名来保存旧日志文件。扩展是基于日期和时间的,使用strftime格式
%Y-%m-%d_%H-%M-%S
或其前导部分,具体取决于翻转间隔。
但您可以通过执行以下操作来修改here所示的内容:
from logging.handlers import TimedRotatingFileHandler
fh = TimedRotatingFileHandler('mylogfile', when='midnight')
fh.suffix = '%Y_%m_%d.log'
答案 1 :(得分:27)
您需要datetime.strftime()
,这允许您使用C's strftime()
的所有指令格式化时间戳。在您的具体情况下:
>>> datetime.now().strftime('mylogfile_%H_%M_%d_%m_%Y.log')
'mylogfile_08_48_04_02_2012.log'
答案 2 :(得分:7)
是。查看日期时间API,尤其是strftime
。
from datetime import datetime
print datetime.now().strftime("%d_%m_%Y")
答案 3 :(得分:2)
我们可以使用datetime.now()获取当前时间戳。这是我用来创建带有时间戳记的日志文件的代码-
import logging
from datetime import datetime
LOG_FILENAME = datetime.now().strftime('D:/log/logfile_%H_%M_%S_%d_%m_%Y.log')
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logging.info('Forecastiong Job Started...')
logging.debug('abc method started...')
答案 4 :(得分:2)
使用format()的另一种解决方案:
#generates a date for a generic filename
import datetime
date_raw = datetime.datetime.now()
date_processed = "{}-{}-{}_{}-{}-{}".format(date_raw.year, date_raw.month,
date_raw.day, date_raw.hour, date_raw.minute, date_raw.second)
#example value: date_processed = 2020-1-7_17-17-48
我在自己的项目中使用了它
编辑:当我发现有关f(ormatted)字符串时,这将是另一种解决方案:
date_processed = f"{date_raw.year}-{date_raw.month}-{date_raw.day}_{date_raw.hour}-{date_raw.minute}-{date_raw.second}"
答案 5 :(得分:0)
from time import strftime
fh = logging.FileHandler(strftime("mylogfile_%H_%M_%m_%d_%Y.log"))
答案 6 :(得分:-1)
要打印hour
,minutes
,day
,month
和year
,请使用以下声明
来自datetime
导入datetime
print datetime.now().strftime("%H_%M_%d_%m_%Y")