Python:自动记录类中每个方法的名称和输出

时间:2014-04-24 22:42:30

标签: python logging

我有一个模块,它是C程序的包装类。

每种方法都有各种输入,但输出通常是相同的,即文件名。

class Wrapper(object): 
    def wrapper1(self, infile, outfile):
        do_stuff

        log.info('wrapper1:%s' %outfile)

在我意识到我想要这种行为之前,我已经编写了50种方法。

另外,必须有一种优雅的方式来添加记录器,而不是将该行添加到所有方法中。

干杯

1 个答案:

答案 0 :(得分:1)

使用decorator

import functools
def log(func):
    @functools.wraps(func)
    def wrapper(self, infile, outfile):
        retval = func(self, infile, outfile)
        log.info('wrapper1:%s' %outfile)
        return retval
    return wrapper

class Wrapper(object):
    @log
    def wrapper1(self, infile, outfile):
        do_stuff