From: Mariusz Felisiak Date: Fri, 17 Apr 2020 16:02:47 +0000 (+0200) Subject: bpo-40300: Allow empty logging.Formatter.default_msec_format. (GH-19551) X-Git-Tag: v3.9.0a6~87 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06a35542aad15666cace307d841a95e33f3cbee6;p=thirdparty%2FPython%2Fcpython.git bpo-40300: Allow empty logging.Formatter.default_msec_format. (GH-19551) --- diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index e943011c8afd..7267f812cc19 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 84a177559908..403dc81b13ef 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -597,8 +597,9 @@ class Formatter(object): 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 2ad3c5c20858..99e74ebff608 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -3941,6 +3941,19 @@ class FormatterTest(unittest.TestCase): 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)