mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
[3.13] gh-120683: Fix an error in logging.LogRecord timestamp (GH-120709) (GH-120933)
The integer part of the timestamp can be rounded up, while the millisecond
calculation truncates, causing the log timestamp to be wrong by up to 999 ms
(affected roughly 1 in 8 million timestamps).
(cherry picked from commit 1500a23f33
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
b7240ed3f0
commit
544a47212b
3 changed files with 15 additions and 3 deletions
|
@ -4648,13 +4648,18 @@ class FormatterTest(unittest.TestCase, AssertErrorMessage):
|
|||
(1_677_902_297_100_000_000, 100.0), # exactly 100ms
|
||||
(1_677_903_920_999_998_503, 999.0), # check truncating doesn't round
|
||||
(1_677_903_920_000_998_503, 0.0), # check truncating doesn't round
|
||||
(1_677_903_920_999_999_900, 0.0), # check rounding up
|
||||
)
|
||||
for ns, want in tests:
|
||||
with patch('time.time_ns') as patched_ns:
|
||||
patched_ns.return_value = ns
|
||||
record = logging.makeLogRecord({'msg': 'test'})
|
||||
self.assertEqual(record.msecs, want)
|
||||
self.assertEqual(record.created, ns / 1e9)
|
||||
with self.subTest(ns):
|
||||
self.assertEqual(record.msecs, want)
|
||||
self.assertEqual(record.created, ns / 1e9)
|
||||
self.assertAlmostEqual(record.created - int(record.created),
|
||||
record.msecs / 1e3,
|
||||
delta=1e-3)
|
||||
|
||||
def test_relativeCreated_has_higher_precision(self):
|
||||
# See issue gh-102402.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue