例を考えてみましょう:
debug.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
ロガーを呼び出す関数を作成し、実行が実際に行われた行番号とファイル名を渡すつもりでした。サンプル アプリで 10 ではなく 25 を出力するようにしたい場合、何を変更すればよいでしょうか?