Creating logged functions using decorators
Michele Simionato
michele.simionato at gmail.com
Sun Jul 8 00:39:46 EDT 2007
On Jul 7, 8:47 pm, "Nathan Harmston" <ratchetg... at googlemail.com>
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
Using my own decorator module (http://www.phyast.pitt.edu/~micheles/
python/documentation.html)
that would be
from decorator import decorator
@decorator
def log(f, *args, **kw):
result = f(*args, **kw)
print args, kw, result
return result
Michele Simionato
More information about the Python-list
mailing list