gh-89047: Fix msecs computation so you never end up with 1000 msecs. (GH-96340)

This commit is contained in:
Vinay Sajip 2022-08-27 13:33:24 +01:00 committed by GitHub
parent 013e659e49
commit 6fbd889d6e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View file

@ -340,7 +340,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()

View file

@ -4261,6 +4261,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):