On Jul 7, 1:47 pm, "Nathan Harmston" <[EMAIL PROTECTED]> wrote: > 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
Yes. Capture the output of the function to a variable and log it before you return it. def log(fn): def newfn(*args): print datetime.date.today() print __file__ print fn.__name__ print args returnValue = fn(*args) print returnValue return return newfn Here's another idea: wrap the call to fn inside a try/except block, so that if the function raises an exception, you can log it and then reraise it. -- Paul -- http://mail.python.org/mailman/listinfo/python-list