2012-02-03 116 views
15

日期时间当我创建我的日志,我想要的名称以包含日期时间。现在要在日志文件名

,在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' 

不是一个非常好的海峡追加到日志文件名!我想我的日志文件是这样的:

mylogfile_21_35_03_02_2012.log 

有没有什么蟒蛇可以做到这一点很容易做?请注意,我正在创建日志文件为

fh = logging.FileHandler("mylogfile" + datetimecomp + ".log") 

任何提示?

+1

这可能很容易地用Google搜索。 – jdi 2012-02-03 21:51:27

+0

@jdi:“可能”? – Johnsyweb 2012-02-03 21:53:24

+0

标题让我笑,幸运的是你的问题身体是好的,或者我不知道什么是“anyold anytime”意思:) – Kekoa 2012-02-03 21:53:55

回答

21

你需要datetime.strftime(),这允许你格式化使用所有C's strftime()的指令的时间戳。在您的具体情况:

>>> datetime.now().strftime('mylogfile_%H_%M_%d_%m_%Y.log') 
'mylogfile_08_48_04_02_2012.log' 
+1

我更喜欢ISO风格的日期时间格式,因为它使排序更容易。 – Johnsyweb 2012-02-03 22:11:37

6

是。看看日期时间API,特别是strftime

from datetime import datetime 
print datetime.now().strftime("%d_%m_%Y") 
24

你也可以使用一个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' 
+4

+1。为什么在Python已经完成如此出色的工作时重新发明轮子! – Johnsyweb 2012-02-03 22:25:14

+0

比接受的答案更好的答案。 – 2015-03-13 04:01:48

+2

只有当cron一直运行时才有效。 – user2601010 2016-02-04 02:09:19

0
from time import strftime 

fh = logging.FileHandler(strftime("mylogfile_%H_%M_%m_%d_%Y.log")) 
-1

要打印hourminutesdaymonthyear,使用下面的语句

datetime进口datetime

print datetime.now().strftime("%H_%M_%d_%m_%Y") 
+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18865507) – Sree 2018-02-19 12:04:04

+0

这不会提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 – rollstuhlfahrer 2018-02-19 12:31:10