python时间格式毫秒_Python日志记录:以时间格式使用毫秒

请注意0​​7000显然更好。

logging.Formatter的formatTime方法看起来像这样:

def formatTime(self, record, datefmt=None):

ct = self.converter(record.created)

if datefmt:

s = time.strftime(datefmt, ct)

else:

t = time.strftime("%Y-%m-%d %H:%M:%S", ct)

s = "%s,%03d" % (t, record.msecs)

return s

请注意“%s,?d”中的逗号。这不能通过指定datefmt来修复,因为ct是一个time.struct_time,这些对象不记录毫秒。

如果我们改变ct的定义以使它成为datetime对象而不是struct_time,那么(至少对于Python的现代版本),我们可以调用ct.strftime,然后我们可以使用%f格式化微秒:

import logging

import datetime as dt

class MyFormatter(logging.Formatter):

converter=dt.datetime.fromtimestamp

def formatTime(self, record, datefmt=None):

ct = self.converter(record.created)

if datefmt:

s = ct.strftime(datefmt)

else:

t = ct.strftime("%Y-%m-%d %H:%M:%S")

s = "%s,%03d" % (t, record.msecs)

return s

logger = logging.getLogger(__name__)

logger.setLevel(logging.DEBUG)

console = logging.StreamHandler()

logger.addHandler(console)

formatter = MyFormatter(fmt='%(asctime)s %(message)s',datefmt='%Y-%m-%d,%H:%M:%S.%f')

console.setFormatter(formatter)

logger.debug('Jackdaws love my big sphinx of quartz.')

# 2011-06-09,07:12:36.553554 Jackdaws love my big sphinx of quartz.

或者,要获取毫秒,请将逗号更改为小数点,并省略datefmt参数:

class MyFormatter(logging.Formatter):

converter=dt.datetime.fromtimestamp

def formatTime(self, record, datefmt=None):

ct = self.converter(record.created)

if datefmt:

s = ct.strftime(datefmt)

else:

t = ct.strftime("%Y-%m-%d %H:%M:%S")

s = "%s.%03d" % (t, record.msecs)

return s

...

formatter = MyFormatter(fmt='%(asctime)s %(message)s')

...

logger.debug('Jackdaws love my big sphinx of quartz.')

# 2011-06-09 08:14:38.343 Jackdaws love my big sphinx of quartz.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值