我正在寻找一种方法来更改python日志记录模块,以显示脚本启动时花费的时间而不是当前时间。
答案 0 :(得分: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("=)")
答案 1 :(得分: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)
等...
答案 2 :(得分:1)
在格式字符串中使用%(relativeCreated)s
,如the documentation。
更新:您可以使用普通的Python格式说明符来控制精度,例如%(relativeCreated).0f
显示小数点为零的浮点值。