python デコレータを使ってロギング処理を楽にする
from datetime import datetime def logging(func): def wrapper(obj, *args, **kwds): print("{} {} {} {} args={} kwds={}".format( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "INFO", func.__qualname__, "START", args, kwds)) rtn = func(obj, *args, **kwds) print("{} {} {} {} return {}".format( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "INFO", func.__qualname__, "END", rtn)) return rtn return wrapper class Hoge: @logging def add(self, x, y): return x + y @logging def sub(self, x, y): return x - y
これで以下のコードを実行すると、
hoge = Hoge() hoge.add(1, 2)
以下が出力される
2015-03-30 00:48:10 INFO Hoge.add START args=(1, 2) kwds={} 2015-03-30 00:48:10 INFO Hoge.add END return 3
メソッド毎にロギング処理を自分で書くのは面倒だし、本質的でないコードが混じるのも好ましくない。
デコレータを付けるだけでメソッドの開始
/終了のログを出せるので、結構便利ではないだろうか。