diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2022-08-27 12:33:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-27 12:33:24 (GMT) |
commit | 6fbd889d6e937ad255f98b5495b78a06d05640d5 (patch) | |
tree | 2143e9854a4a488f846694490fa942367684cb26 | |
parent | 013e659e495796df77aae4d33b67995f9793f454 (diff) | |
download | cpython-6fbd889d6e937ad255f98b5495b78a06d05640d5.zip cpython-6fbd889d6e937ad255f98b5495b78a06d05640d5.tar.gz cpython-6fbd889d6e937ad255f98b5495b78a06d05640d5.tar.bz2 |
gh-89047: Fix msecs computation so you never end up with 1000 msecs. (GH-96340)
-rw-r--r-- | Lib/logging/__init__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index afb5234..c3208a2 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -340,7 +340,7 @@ class LogRecord(object): 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 99ea2f6..a67ed07 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4261,6 +4261,14 @@ class FormatterTest(unittest.TestCase, AssertErrorMessage): 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): |