import Queue
+_moduleLogger = logging.getLogger("gtk_toolbox")
+
+
@contextlib.contextmanager
def flock(path, timeout=-1):
WAIT_FOREVER = -1
mappedItem = function(*item)
target.send(mappedItem)
except Exception, e:
- logging.exception("Forwarding exception!")
+ _moduleLogger.exception("Forwarding exception!")
target.throw(e.__class__, str(e))
'''
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)
return default
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):
+
+ @functools.wraps(func)
+ def wrapper(*args, **kwds):
+ try:
+ return func(*args, **kwds)
+ except Exception:
+ logger.exception(func.__name__)
+ raise
+
+ return wrapper
+
+ return log_exception_decorator
+
+
+_indentationLevel = [0]
+
+
+def trace(logger):
+
+ def trace_decorator(func):
+
+ @functools.wraps(func)
+ def wrapper(*args, **kwds):
+ try:
+ logger.debug("%s> %s" % (" " * _indentationLevel[0], func.__name__, ))
+ _indentationLevel[0] += 1
+ return func(*args, **kwds)
+ except Exception:
+ logger.exception(func.__name__)
+ raise
+ finally:
+ _indentationLevel[0] -= 1
+ logger.debug("%s< %s" % (" " * _indentationLevel[0], func.__name__, ))
+
+ return wrapper
+
+ return trace_decorator