def __get__(self, obj, owner=None):
target = owner if obj is None else obj
if hasattr(target, self.log_attr):
return getattr(target, self.log_attr)
logger = logging.getLogger(self._logger_name(owner))
if target is obj:
if self.context_vars:
extra = dict((k, getattr(target, k, None))
for k in self.context_vars)
elif hasattr(target, '_log_context'):
extra = getattr(target, '_log_context')
else:
extra = _context_search(inspect.currentframe())
if extra:
logger = logging.LoggerAdapter(logger, extra)
setattr(target, self.log_attr, logger)
return logger
评论列表
文章目录