[3.10] gh-89047: Fix msecs computation so you never end up with 1000 msecs. (GH-96340) (GH-96342)
![](https://secure.gravatar.com/avatar/cc7737cd64a84f1b5c61a160798e97ee.jpg?s=120&d=mm&r=g)
https://github.com/python/cpython/commit/c0a9859afb522d555a9b9851be48be56327... commit: c0a9859afb522d555a9b9851be48be56327d252d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> committer: vsajip <vinay_sajip@yahoo.co.uk> date: 2022-08-27T15:10:17+01:00 summary: [3.10] gh-89047: Fix msecs computation so you never end up with 1000 msecs. (GH-96340) (GH-96342) files: M Lib/logging/__init__.py M Lib/test/test_logging.py diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 19bd2bc20b25..09810bdf0d0b 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -325,7 +325,7 @@ def __init__(self, name, level, pathname, lineno, self.lineno = lineno self.funcName = func self.created = ct - self.msecs = (ct - int(ct)) * 1000 + self.msecs = int((ct - int(ct)) * 1000) + 0.0 # see gh-89047 self.relativeCreated = (self.created - _startTime) * 1000 if logThreads: self.thread = threading.get_ident() diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index af68f2582040..920bbeb66006 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4020,6 +4020,14 @@ class NoMsecFormatter(logging.Formatter): f.converter = time.gmtime self.assertEqual(f.formatTime(r), '21/04/1993 08:03:00') + def test_issue_89047(self): + f = logging.Formatter(fmt='{asctime}.{msecs:03.0f} {message}', style='{', datefmt="%Y-%m-%d %H:%M:%S") + for i in range(2500): + time.sleep(0.0004) + r = logging.makeLogRecord({'msg': 'Message %d' % (i + 1)}) + s = f.format(r) + self.assertNotIn('.1000', s) + class TestBufferingFormatter(logging.BufferingFormatter): def formatHeader(self, records):
participants (1)
-
vsajip