nameko.log_helpers 源代码
from __future__ import absolute_import
import logging
import time
from contextlib import contextmanager
[文档]
def make_timing_logger(logger, precision=3, level=logging.DEBUG):
"""返回一个计时记录器。
用法::
>>> logger = logging.getLogger('foobar')
>>> log_time = make_timing_logger(
... logger, level=logging.INFO, precision=2)
>>>
>>> with log_time("hello %s", "world"):
... time.sleep(1)
INFO:foobar:hello world in 1.00s
"""
@contextmanager
def log_time(msg, *args):
"""在上下文块退出时,记录 `msg` 和 `*args` 以及(简单的挂钟)计时信息。"""
start_time = time.time()
try:
yield
finally:
message = "{} in %0.{}fs".format(msg, precision)
duration = time.time() - start_time
args = args + (duration,)
logger.log(level, message, *args)
return log_time