我正在寻找一种方法来更改 python 日志记录模块以显示脚本启动时花费的时间而不是当前时间。
问问题
378 次
3 回答
1
您可以继承logging.Formatter
和重新实现formatTime
. 像这样的东西:
start_time = datetime.now()
class MyFormatter(logging.Formatter):
def formatTime(self, record, datefmt=None):
delta = (datetime.now() - start_time).total_seconds()
return "{}".format(delta)
进而:
handler = logging.StreamHandler()
fmt = MyFormatter('%(filename)s %(levelname)-8s [%(asctime)s] %(message)s')
handler.setFormatter(fmt)
log = logging.getLogger('main')
log.addHandler(handler)
log.debug("=)")
于 2013-03-18T16:54:15.503 回答
1
你可以试试这样的。
在脚本开头定义自定义格式化程序:
import time
import logging
import datetime as dt
class MyFormatter(logging.Formatter):
def __init__(self,fmt=None,datefmt=None):
super(MyFormatter,self).__init__(fmt,datefmt)
self.reftime = dt.datetime.fromtimestamp(time.mktime(time.localtime()))
def formatTime(self, record, datefmt=None):
ctime = dt.datetime.fromtimestamp(time.mktime(self.converter(record.created)))
ct = (ctime - self.reftime).timetuple()
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
然后设置你的日志系统:
handler = logging.StreamHandler(MyFormatter())
logger = logging.getLogger()
logger.addHandler(handler)
ETC...
于 2013-03-18T16:55:43.773 回答
1
如文档%(relativeCreated)s
中所示,在您的格式字符串中使用。
更新:您可以使用普通的 Python 格式说明符来控制精度,例如%(relativeCreated).0f
以零小数位显示浮点值。
于 2013-04-26T19:08:08.650 回答