diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-01-21 09:26:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-01-21 09:26:54 +0000 |
| commit | f51f26868c3eb8fd0a4e624ea3066689e7f6b8a7 (patch) | |
| tree | ea842d09aa12d23b2f7a75a3ea22ed1bee1142c0 /openstackclient/common | |
| parent | 2b670afa33a8d8677f534e37412882110ea60ee3 (diff) | |
| parent | 50d54bb007c2531013e9b7ae358737dcc19c519b (diff) | |
| download | python-openstackclient-f51f26868c3eb8fd0a4e624ea3066689e7f6b8a7.tar.gz | |
Merge "log_method: get logger from decorated method if unspecified"
Diffstat (limited to 'openstackclient/common')
| -rw-r--r-- | openstackclient/common/utils.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py index 096c995b..3ae30c8f 100644 --- a/openstackclient/common/utils.py +++ b/openstackclient/common/utils.py @@ -26,28 +26,32 @@ from oslo_utils import importutils from openstackclient.common import exceptions -def log_method(log, level=logging.DEBUG): - """Logs a method and its arguments when entered.""" +class log_method(object): - def decorator(func): + def __init__(self, log=None, level=logging.DEBUG): + self._log = log + self._level = level + + def __call__(self, func): func_name = func.__name__ + if not self._log: + self._log = logging.getLogger(func.__class__.__name__) @six.wraps(func) - def wrapper(self, *args, **kwargs): - if log.isEnabledFor(level): + def wrapper(*args, **kwargs): + if self._log.isEnabledFor(self._level): pretty_args = [] if args: pretty_args.extend(str(a) for a in args) if kwargs: pretty_args.extend( "%s=%s" % (k, v) for k, v in six.iteritems(kwargs)) - log.log(level, "%s(%s)", func_name, ", ".join(pretty_args)) - return func(self, *args, **kwargs) + self._log.log(self._level, "%s(%s)", + func_name, ", ".join(pretty_args)) + return func(*args, **kwargs) return wrapper - return decorator - def find_resource(manager, name_or_id, **kwargs): """Helper for the _find_* methods. |
