考虑这个例子:
调试.py:
import logging
class log_funcname:
def __init__(self, the_logger):
self.the_logger = the_logger
def __call__(self, fn):
def simply_call(*args, **kwargs):
self.the_logger.critical(fn.func_name)
return fn(*args, **kwargs)
return simply_call
logger = logging.getLogger()
formatter = logging.Formatter("%(lineno)s")
ch = logging.StreamHandler()
ch.setFormatter(formatter)
logger.addHandler(ch)
@log_funcname(logger)
def hello():
pass
hello()
输出:
$ python debug.py
10
我的意思是创建一个调用记录器的函数,将执行实际发生的行号和文件名传递给它。如果我希望示例应用输出 25 而不是 10,那我应该改变什么?