現在の時間ではなく、スクリプトが開始されたときに費やした時間を表示するようにPythonロギングモジュールを変更する方法を探しています。
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)
等...
于 2013-03-18T16:55:43.773 に答える
1
ドキュメント%(relativeCreated)s
に示されているように、フォーマット文字列で使用します。
更新:通常の Python 形式指定子を使用して精度を制御できます。たとえば%(relativeCreated).0f
、浮動小数点値を小数点以下 0 桁で表示できます。
于 2013-04-26T19:08:08.650 に答える