def __call__(self, op, path, *args):
    if (op != 'access'):
        self.log.debug('-> %s %s %s', op, path, repr(args))
    ret = '[Unhandled Exception]'
    try:
        ret = getattr(self, op)(path, *args)
        return ret
    except OSError as e:
        ret = str(e)
        raise
    finally:
        if (op != 'access'):
            self.log.debug('<- %s %s', op, repr(ret))
def __call__(self, op, path, *args):
    if (op != 'access'):
        self.log.debug('-> %s %s %s', op, path, repr(args))
    ret = '[Unhandled Exception]'
    try:
        ret = getattr(self, op)(path, *args)
        return ret
    except OSError as e:
        ret = str(e)
        raise
    finally:
        if (op != 'access'):
            self.log.debug('<- %s %s', op, repr(ret))