mirror of https://github.com/python/cpython
gh-118868: logging QueueHandler fix passing of kwargs (GH-118869)
Co-authored-by: Nice Zombies <nineteendo19d0@gmail.com> Co-authored-by: Vinay Sajip <vinay_sajip@yahoo.co.uk>
This commit is contained in:
parent
9e052619a6
commit
dce14bb2dc
|
@ -725,16 +725,16 @@ class DictConfigurator(BaseConfigurator):
|
||||||
|
|
||||||
def _configure_queue_handler(self, klass, **kwargs):
|
def _configure_queue_handler(self, klass, **kwargs):
|
||||||
if 'queue' in kwargs:
|
if 'queue' in kwargs:
|
||||||
q = kwargs['queue']
|
q = kwargs.pop('queue')
|
||||||
else:
|
else:
|
||||||
q = queue.Queue() # unbounded
|
q = queue.Queue() # unbounded
|
||||||
rhl = kwargs.get('respect_handler_level', False)
|
|
||||||
if 'listener' in kwargs:
|
rhl = kwargs.pop('respect_handler_level', False)
|
||||||
lklass = kwargs['listener']
|
lklass = kwargs.pop('listener', logging.handlers.QueueListener)
|
||||||
else:
|
handlers = kwargs.pop('handlers', [])
|
||||||
lklass = logging.handlers.QueueListener
|
|
||||||
listener = lklass(q, *kwargs.get('handlers', []), respect_handler_level=rhl)
|
listener = lklass(q, *handlers, respect_handler_level=rhl)
|
||||||
handler = klass(q)
|
handler = klass(q, **kwargs)
|
||||||
handler.listener = listener
|
handler.listener = listener
|
||||||
return handler
|
return handler
|
||||||
|
|
||||||
|
|
|
@ -3976,6 +3976,35 @@ class ConfigDictTest(BaseTest):
|
||||||
}
|
}
|
||||||
logging.config.dictConfig(config)
|
logging.config.dictConfig(config)
|
||||||
|
|
||||||
|
# gh-118868: check if kwargs are passed to logging QueueHandler
|
||||||
|
def test_kwargs_passing(self):
|
||||||
|
class CustomQueueHandler(logging.handlers.QueueHandler):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(queue.Queue())
|
||||||
|
self.custom_kwargs = kwargs
|
||||||
|
|
||||||
|
custom_kwargs = {'foo': 'bar'}
|
||||||
|
|
||||||
|
config = {
|
||||||
|
'version': 1,
|
||||||
|
'handlers': {
|
||||||
|
'custom': {
|
||||||
|
'class': CustomQueueHandler,
|
||||||
|
**custom_kwargs
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'root': {
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'handlers': ['custom']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logging.config.dictConfig(config)
|
||||||
|
|
||||||
|
handler = logging.getHandlerByName('custom')
|
||||||
|
self.assertEqual(handler.custom_kwargs, custom_kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ManagerTest(BaseTest):
|
class ManagerTest(BaseTest):
|
||||||
def test_manager_loggerclass(self):
|
def test_manager_loggerclass(self):
|
||||||
logged = []
|
logged = []
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fixed issue where kwargs were no longer passed to the logging handler
|
||||||
|
QueueHandler
|
Loading…
Reference in New Issue