X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fgtk_toolbox.py;h=888906927180fb962a1285a77c20df6f57899f8a;hp=c4203b0acea7f5dcd0f0f30beff3b0a4a84ce39c;hb=3fde92caf5c07c62c8395b16bde9aa85d4188b1c;hpb=acafb5b1bf5449a0886f74a81542e920fa1d30f2 diff --git a/src/gtk_toolbox.py b/src/gtk_toolbox.py index c4203b0..8889069 100644 --- a/src/gtk_toolbox.py +++ b/src/gtk_toolbox.py @@ -213,7 +213,7 @@ def safecall(f, errorDisplay=None, default=None, exception=Exception): ''' def _safecall(*args, **argv): try: - return f(*args,**argv) + return f(*args, **argv) except exception, e: if errorDisplay is not None: errorDisplay.push_exception(e) @@ -221,6 +221,23 @@ def safecall(f, errorDisplay=None, default=None, exception=Exception): return _safecall +def log_call(logger): + + def log_call_decorator(func): + + @functools.wraps(func) + def wrapper(*args, **kwds): + _moduleLogger.info("-> %s" % (func.__name__, )) + try: + return func(*args, **kwds) + finally: + _moduleLogger.info("<- %s" % (func.__name__, )) + + return wrapper + + return log_call_decorator + + def log_exception(logger): def log_exception_decorator(func): @@ -236,3 +253,23 @@ def log_exception(logger): return wrapper return log_exception_decorator + + +def trace(logger): + + def trace_decorator(func): + + @functools.wraps(func) + def wrapper(*args, **kwds): + try: + logger.info("> %s" % (func.__name__, )) + return func(*args, **kwds) + except Exception: + logger.exception(func.__name__) + raise + finally: + logger.info("< %s" % (func.__name__, )) + + return wrapper + + return trace_decorator