[Python-checkins] bpo-40300: Allow empty logging.Formatter.default_msec_format. (GH-19551)

Mariusz Felisiak webhook-mailer at python.org
Fri Apr 17 12:03:01 EDT 2020


https://github.com/python/cpython/commit/06a35542aad15666cace307d841a95e33f3cbee6
commit: 06a35542aad15666cace307d841a95e33f3cbee6
branch: master
author: Mariusz Felisiak <felisiak.mariusz at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-04-17T17:02:47+01:00
summary:

bpo-40300: Allow empty logging.Formatter.default_msec_format. (GH-19551)

files:
M Doc/library/logging.rst
M Lib/logging/__init__.py
M Lib/test/test_logging.py

diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst
index e943011c8afd8..7267f812cc192 100644
--- a/Doc/library/logging.rst
+++ b/Doc/library/logging.rst
@@ -608,6 +608,9 @@ The useful mapping keys in a :class:`LogRecord` are given in the section on
          attributes are ``default_time_format`` (for the strptime format string)
          and ``default_msec_format`` (for appending the millisecond value).
 
+      .. versionchanged:: 3.9
+         The ``default_msec_format`` can be ``None``.
+
    .. method:: formatException(exc_info)
 
       Formats the specified exception information (a standard exception tuple as
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 84a177559908a..403dc81b13ef4 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -597,8 +597,9 @@ def formatTime(self, record, datefmt=None):
         if datefmt:
             s = time.strftime(datefmt, ct)
         else:
-            t = time.strftime(self.default_time_format, ct)
-            s = self.default_msec_format % (t, record.msecs)
+            s = time.strftime(self.default_time_format, ct)
+            if self.default_msec_format:
+                s = self.default_msec_format % (s, record.msecs)
         return s
 
     def formatException(self, ei):
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 2ad3c5c208583..99e74ebff6087 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -3941,6 +3941,19 @@ def test_time(self):
         f.format(r)
         self.assertEqual(r.asctime, '1993-04-21 08:03:00,123')
 
+    def test_default_msec_format_none(self):
+        class NoMsecFormatter(logging.Formatter):
+            default_msec_format = None
+            default_time_format = '%d/%m/%Y %H:%M:%S'
+
+        r = self.get_record()
+        dt = datetime.datetime(1993, 4, 21, 8, 3, 0, 123, utc)
+        r.created = time.mktime(dt.astimezone(None).timetuple())
+        f = NoMsecFormatter()
+        f.converter = time.gmtime
+        self.assertEqual(f.formatTime(r), '21/04/1993 08:03:00')
+
+
 class TestBufferingFormatter(logging.BufferingFormatter):
     def formatHeader(self, records):
         return '[(%d)' % len(records)



More information about the Python-checkins mailing list