mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.14] gh-138162: Fix logging.LoggerAdapter with merge_extra=True and without the extra argument (GH-140511) (GH-140784)
(cherry picked from commit 327dbbedff)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
6e70c75d1b
commit
6bb49ae650
4 changed files with 50 additions and 11 deletions
|
|
@ -5800,7 +5800,7 @@ def cleanup():
|
|||
|
||||
self.addCleanup(cleanup)
|
||||
self.addCleanup(logging.shutdown)
|
||||
self.adapter = logging.LoggerAdapter(logger=self.logger, extra=None)
|
||||
self.adapter = logging.LoggerAdapter(logger=self.logger)
|
||||
|
||||
def test_exception(self):
|
||||
msg = 'testing exception: %r'
|
||||
|
|
@ -5971,6 +5971,18 @@ def test_extra_merged(self):
|
|||
self.assertEqual(record.foo, '1')
|
||||
self.assertEqual(record.bar, '2')
|
||||
|
||||
self.adapter.critical('no extra') # should not fail
|
||||
self.assertEqual(len(self.recording.records), 2)
|
||||
record = self.recording.records[-1]
|
||||
self.assertEqual(record.foo, '1')
|
||||
self.assertNotHasAttr(record, 'bar')
|
||||
|
||||
self.adapter.critical('none extra', extra=None) # should not fail
|
||||
self.assertEqual(len(self.recording.records), 3)
|
||||
record = self.recording.records[-1]
|
||||
self.assertEqual(record.foo, '1')
|
||||
self.assertNotHasAttr(record, 'bar')
|
||||
|
||||
def test_extra_merged_log_call_has_precedence(self):
|
||||
self.adapter = logging.LoggerAdapter(logger=self.logger,
|
||||
extra={'foo': '1'},
|
||||
|
|
@ -5982,6 +5994,25 @@ def test_extra_merged_log_call_has_precedence(self):
|
|||
self.assertHasAttr(record, 'foo')
|
||||
self.assertEqual(record.foo, '2')
|
||||
|
||||
def test_extra_merged_without_extra(self):
|
||||
self.adapter = logging.LoggerAdapter(logger=self.logger,
|
||||
merge_extra=True)
|
||||
|
||||
self.adapter.critical('foo should be here', extra={'foo': '1'})
|
||||
self.assertEqual(len(self.recording.records), 1)
|
||||
record = self.recording.records[-1]
|
||||
self.assertEqual(record.foo, '1')
|
||||
|
||||
self.adapter.critical('no extra') # should not fail
|
||||
self.assertEqual(len(self.recording.records), 2)
|
||||
record = self.recording.records[-1]
|
||||
self.assertNotHasAttr(record, 'foo')
|
||||
|
||||
self.adapter.critical('none extra', extra=None) # should not fail
|
||||
self.assertEqual(len(self.recording.records), 3)
|
||||
record = self.recording.records[-1]
|
||||
self.assertNotHasAttr(record, 'foo')
|
||||
|
||||
|
||||
class PrefixAdapter(logging.LoggerAdapter):
|
||||
prefix = 'Adapter'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue