Allow configuration of handler properties.
This commit is contained in:
parent
8f2b6ad96f
commit
8d27023a7e
@ -710,6 +710,7 @@ class DictConfigurator(BaseConfigurator):
|
|||||||
'address' in config:
|
'address' in config:
|
||||||
config['address'] = self.as_tuple(config['address'])
|
config['address'] = self.as_tuple(config['address'])
|
||||||
factory = klass
|
factory = klass
|
||||||
|
props = config.pop('.', None)
|
||||||
kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
|
kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
|
||||||
try:
|
try:
|
||||||
result = factory(**kwargs)
|
result = factory(**kwargs)
|
||||||
@ -728,6 +729,9 @@ class DictConfigurator(BaseConfigurator):
|
|||||||
result.setLevel(logging._checkLevel(level))
|
result.setLevel(logging._checkLevel(level))
|
||||||
if filters:
|
if filters:
|
||||||
self.add_filters(result, filters)
|
self.add_filters(result, filters)
|
||||||
|
if props:
|
||||||
|
for name, value in props.items():
|
||||||
|
setattr(result, name, value)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def add_handlers(self, logger, handlers):
|
def add_handlers(self, logger, handlers):
|
||||||
|
@ -2389,6 +2389,32 @@ class ConfigDictTest(BaseTest):
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# As config0, but with properties
|
||||||
|
config14 = {
|
||||||
|
'version': 1,
|
||||||
|
'formatters': {
|
||||||
|
'form1' : {
|
||||||
|
'format' : '%(levelname)s ++ %(message)s',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'handlers' : {
|
||||||
|
'hand1' : {
|
||||||
|
'class' : 'logging.StreamHandler',
|
||||||
|
'formatter' : 'form1',
|
||||||
|
'level' : 'NOTSET',
|
||||||
|
'stream' : 'ext://sys.stdout',
|
||||||
|
'.': {
|
||||||
|
'foo': 'bar',
|
||||||
|
'terminator': '!\n',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'root' : {
|
||||||
|
'level' : 'WARNING',
|
||||||
|
'handlers' : ['hand1'],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
def apply_config(self, conf):
|
def apply_config(self, conf):
|
||||||
logging.config.dictConfig(conf)
|
logging.config.dictConfig(conf)
|
||||||
|
|
||||||
@ -2625,6 +2651,15 @@ class ConfigDictTest(BaseTest):
|
|||||||
def test_config13_failure(self):
|
def test_config13_failure(self):
|
||||||
self.assertRaises(Exception, self.apply_config, self.config13)
|
self.assertRaises(Exception, self.apply_config, self.config13)
|
||||||
|
|
||||||
|
def test_config14_ok(self):
|
||||||
|
with captured_stdout() as output:
|
||||||
|
self.apply_config(self.config14)
|
||||||
|
h = logging._handlers['hand1']
|
||||||
|
self.assertEqual(h.foo, 'bar')
|
||||||
|
self.assertEqual(h.terminator, '!\n')
|
||||||
|
logging.warning('Exclamation')
|
||||||
|
self.assertTrue(output.getvalue().endswith('Exclamation!\n'))
|
||||||
|
|
||||||
@unittest.skipUnless(threading, 'listen() needs threading to work')
|
@unittest.skipUnless(threading, 'listen() needs threading to work')
|
||||||
def setup_via_listener(self, text, verify=None):
|
def setup_via_listener(self, text, verify=None):
|
||||||
text = text.encode("utf-8")
|
text = text.encode("utf-8")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user