Creating logged functions using decorators

Nathan Harmston ratchetgrid at googlemail.com
Sat Jul 7 20:47:12 CEST 2007


Hi,

I m thinking about writing some code which logs the input and output
of a function/script and stores it in a database using sqlalchemy
(although I havent started on this yet). I want to do this via a
decorator ( I think this is the best way ).

def log(fn):
    def newfn(*args):
        print datetime.date.today()
        print __file__
        print fn.__name__
        print args
        return fn(*args)
    return newfn

@log
def doAnalysis(a, b):
    print a, b
    return a + b

doAnalysis(3, 7)

I can access the arguments passed to the "logged" function, but is
there anyway I can capture the output of the function i.e. 10.

Many Thanks in advance,

Nathan



More information about the Python-list mailing list