|
|
|
@ -245,7 +245,7 @@ class BaseConfigurator(object):
|
|
|
|
|
def configure_custom(self, config):
|
|
|
|
|
"""Configure an object with a user-supplied factory."""
|
|
|
|
|
c = config.pop('()')
|
|
|
|
|
if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
|
|
|
|
|
if not hasattr(c, '__call__') and type(c) != type:
|
|
|
|
|
c = self.resolve(c)
|
|
|
|
|
props = config.pop('.', None)
|
|
|
|
|
# Check for valid identifiers
|
|
|
|
@ -296,21 +296,21 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
level = handler_config.get('level', None)
|
|
|
|
|
if level:
|
|
|
|
|
handler.setLevel(_checkLevel(level))
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure handler '
|
|
|
|
|
'%r: %s' % (name, e))
|
|
|
|
|
loggers = config.get('loggers', EMPTY_DICT)
|
|
|
|
|
for name in loggers:
|
|
|
|
|
try:
|
|
|
|
|
self.configure_logger(name, loggers[name], True)
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure logger '
|
|
|
|
|
'%r: %s' % (name, e))
|
|
|
|
|
root = config.get('root', None)
|
|
|
|
|
if root:
|
|
|
|
|
try:
|
|
|
|
|
self.configure_root(root, True)
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure root '
|
|
|
|
|
'logger: %s' % e)
|
|
|
|
|
else:
|
|
|
|
@ -325,7 +325,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
try:
|
|
|
|
|
formatters[name] = self.configure_formatter(
|
|
|
|
|
formatters[name])
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure '
|
|
|
|
|
'formatter %r: %s' % (name, e))
|
|
|
|
|
# Next, do filters - they don't refer to anything else, either
|
|
|
|
@ -333,7 +333,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
for name in filters:
|
|
|
|
|
try:
|
|
|
|
|
filters[name] = self.configure_filter(filters[name])
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure '
|
|
|
|
|
'filter %r: %s' % (name, e))
|
|
|
|
|
|
|
|
|
@ -346,7 +346,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
handler = self.configure_handler(handlers[name])
|
|
|
|
|
handler.name = name
|
|
|
|
|
handlers[name] = handler
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure handler '
|
|
|
|
|
'%r: %s' % (name, e))
|
|
|
|
|
# Next, do loggers - they refer to handlers and filters
|
|
|
|
@ -385,7 +385,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
existing.remove(name)
|
|
|
|
|
try:
|
|
|
|
|
self.configure_logger(name, loggers[name])
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure logger '
|
|
|
|
|
'%r: %s' % (name, e))
|
|
|
|
|
|
|
|
|
@ -408,7 +408,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
if root:
|
|
|
|
|
try:
|
|
|
|
|
self.configure_root(root)
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to configure root '
|
|
|
|
|
'logger: %s' % e)
|
|
|
|
|
finally:
|
|
|
|
@ -420,7 +420,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
factory = config['()'] # for use in exception handler
|
|
|
|
|
try:
|
|
|
|
|
result = self.configure_custom(config)
|
|
|
|
|
except TypeError, te:
|
|
|
|
|
except TypeError as te:
|
|
|
|
|
if "'format'" not in str(te):
|
|
|
|
|
raise
|
|
|
|
|
#Name of parameter changed from fmt to format.
|
|
|
|
@ -450,7 +450,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
for f in filters:
|
|
|
|
|
try:
|
|
|
|
|
filterer.addFilter(self.config['filters'][f])
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to add filter %r: %s' % (f, e))
|
|
|
|
|
|
|
|
|
|
def configure_handler(self, config):
|
|
|
|
@ -459,14 +459,14 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
if formatter:
|
|
|
|
|
try:
|
|
|
|
|
formatter = self.config['formatters'][formatter]
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to set formatter '
|
|
|
|
|
'%r: %s' % (formatter, e))
|
|
|
|
|
level = config.pop('level', None)
|
|
|
|
|
filters = config.pop('filters', None)
|
|
|
|
|
if '()' in config:
|
|
|
|
|
c = config.pop('()')
|
|
|
|
|
if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
|
|
|
|
|
if not hasattr(c, '__call__') and type(c) != type:
|
|
|
|
|
c = self.resolve(c)
|
|
|
|
|
factory = c
|
|
|
|
|
else:
|
|
|
|
@ -476,7 +476,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
'target' in config:
|
|
|
|
|
try:
|
|
|
|
|
config['target'] = self.config['handlers'][config['target']]
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to set target handler '
|
|
|
|
|
'%r: %s' % (config['target'], e))
|
|
|
|
|
elif issubclass(klass, logging.handlers.SMTPHandler) and\
|
|
|
|
@ -489,7 +489,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
|
|
|
|
|
try:
|
|
|
|
|
result = factory(**kwargs)
|
|
|
|
|
except TypeError, te:
|
|
|
|
|
except TypeError as te:
|
|
|
|
|
if "'stream'" not in str(te):
|
|
|
|
|
raise
|
|
|
|
|
#The argument name changed from strm to stream
|
|
|
|
@ -511,7 +511,7 @@ class DictConfigurator(BaseConfigurator):
|
|
|
|
|
for h in handlers:
|
|
|
|
|
try:
|
|
|
|
|
logger.addHandler(self.config['handlers'][h])
|
|
|
|
|
except StandardError, e:
|
|
|
|
|
except Exception as e:
|
|
|
|
|
raise ValueError('Unable to add handler %r: %s' % (h, e))
|
|
|
|
|
|
|
|
|
|
def common_logger_config(self, logger, config, incremental=False):
|
|
|
|
|