diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-04-28 03:12:40 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-04-28 03:12:40 +0000 |
| commit | f8ef97d6b14ecf425e92034449a3743b42829009 (patch) | |
| tree | bf7f4fa73f229ae36edfe3a42b4e8faa1c67f1f1 /openstack/common | |
| parent | e79811464cdab63b12e140d4d7a9ec650ddcc3e0 (diff) | |
| parent | 465e27158725b6b262e251247bc60edaeda2f54d (diff) | |
| download | oslo-f8ef97d6b14ecf425e92034449a3743b42829009.tar.gz oslo-f8ef97d6b14ecf425e92034449a3743b42829009.tar.xz oslo-f8ef97d6b14ecf425e92034449a3743b42829009.zip | |
Merge "Support for lazily instantiated loggers"
Diffstat (limited to 'openstack/common')
| -rw-r--r-- | openstack/common/log.py | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/openstack/common/log.py b/openstack/common/log.py index c29308c..1599dbf 100644 --- a/openstack/common/log.py +++ b/openstack/common/log.py @@ -207,7 +207,27 @@ def _get_log_file_path(binary=None): return '%s.log' % (os.path.join(logdir, binary),) -class ContextAdapter(logging.LoggerAdapter): +class BaseLoggerAdapter(logging.LoggerAdapter): + + def audit(self, msg, *args, **kwargs): + self.log(logging.AUDIT, msg, *args, **kwargs) + + +class LazyAdapter(BaseLoggerAdapter): + def __init__(self, name='unknown', version='unknown'): + self._logger = None + self.extra = {} + self.name = name + self.version = version + + @property + def logger(self): + if not self._logger: + self._logger = getLogger(self.name, self.version) + return self._logger + + +class ContextAdapter(BaseLoggerAdapter): warn = logging.LoggerAdapter.warning def __init__(self, logger, project_name, version_string): @@ -215,8 +235,9 @@ class ContextAdapter(logging.LoggerAdapter): self.project = project_name self.version = version_string - def audit(self, msg, *args, **kwargs): - self.log(logging.AUDIT, msg, *args, **kwargs) + @property + def handlers(self): + return self.logger.handlers def deprecated(self, msg, *args, **kwargs): stdmsg = _("Deprecated: %s") % msg @@ -440,6 +461,15 @@ def getLogger(name='unknown', version='unknown'): return _loggers[name] +def getLazyLogger(name='unknown', version='unknown'): + """ + create a pass-through logger that does not create the real logger + until it is really needed and delegates all calls to the real logger + once it is created + """ + return LazyAdapter(name, version) + + class WritableLogger(object): """A thin wrapper that responds to `write` and logs.""" |
