bpo-31457: Allow for nested LoggerAdapter objects (#3551)

Some of the proxied methods use internal Logger state which isn't proxied,
causing failures if an adapter is applied to another adapter.

This commit fixes the issue, adds a new test for the use case.
This commit is contained in:
Łukasz Langa 2017-09-14 11:34:47 -04:00 committed by GitHub
parent 5a61559fb0
commit 1bbd482bcf
3 changed files with 33 additions and 0 deletions

View file

@ -3986,6 +3986,17 @@ class LoggerAdapterTest(unittest.TestCase):
self.assertFalse(self.logger.hasHandlers())
self.assertFalse(self.adapter.hasHandlers())
def test_nested(self):
msg = 'Adapters can be nested, yo.'
adapter_adapter = logging.LoggerAdapter(logger=self.adapter, extra=None)
adapter_adapter.log(logging.CRITICAL, msg, self.recording)
self.assertEqual(len(self.recording.records), 1)
record = self.recording.records[0]
self.assertEqual(record.levelno, logging.CRITICAL)
self.assertEqual(record.msg, msg)
self.assertEqual(record.args, (self.recording,))
class LoggerTest(BaseTest):