From c2b7a66b91cdb96fbfdb160f96797208ddc5e436 Mon Sep 17 00:00:00 2001 From: Inada Naoki Date: Tue, 13 Apr 2021 18:17:03 +0900 Subject: bpo-43731: Add an `encoding` parameter to logging.fileConfig() (GH-25273) --- Doc/library/logging.config.rst | 7 ++++++- Lib/logging/config.py | 5 +++-- Misc/NEWS.d/next/Library/2021-04-08-15-19-20.bpo-43731.nnVd3h.rst | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-04-08-15-19-20.bpo-43731.nnVd3h.rst diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index cab49f6..f833bcd 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -77,7 +77,7 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. versionadded:: 3.2 -.. function:: fileConfig(fname, defaults=None, disable_existing_loggers=True) +.. function:: fileConfig(fname, defaults=None, disable_existing_loggers=True, encoding=None) Reads the logging configuration from a :mod:`configparser`\-format file. The format of the file should be as described in @@ -111,6 +111,8 @@ in :mod:`logging` itself) and defining handlers which are declared either in they or their ancestors are explicitly named in the logging configuration. + :param encoding: The encoding used to open file when *fname* is filename. + .. versionchanged:: 3.4 An instance of a subclass of :class:`~configparser.RawConfigParser` is now accepted as a value for ``fname``. This facilitates: @@ -121,6 +123,9 @@ in :mod:`logging` itself) and defining handlers which are declared either in application (e.g. based on command-line parameters or other aspects of the runtime environment) before being passed to ``fileConfig``. + .. versionadded:: 3.10 + The *encoding* parameter is added. + .. function:: listen(port=DEFAULT_LOGGING_CONFIG_PORT, verify=None) Starts up a socket server on the specified port, and listens for new diff --git a/Lib/logging/config.py b/Lib/logging/config.py index fd3aded..3bc63b7 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -48,7 +48,7 @@ RESET_ERROR = errno.ECONNRESET # _listener holds the server object doing the listening _listener = None -def fileConfig(fname, defaults=None, disable_existing_loggers=True): +def fileConfig(fname, defaults=None, disable_existing_loggers=True, encoding=None): """ Read the logging configuration from a ConfigParser-format file. @@ -66,7 +66,8 @@ def fileConfig(fname, defaults=None, disable_existing_loggers=True): if hasattr(fname, 'readline'): cp.read_file(fname) else: - cp.read(fname) + encoding = io.text_encoding(encoding) + cp.read(fname, encoding=encoding) formatters = _create_formatters(cp) diff --git a/Misc/NEWS.d/next/Library/2021-04-08-15-19-20.bpo-43731.nnVd3h.rst b/Misc/NEWS.d/next/Library/2021-04-08-15-19-20.bpo-43731.nnVd3h.rst new file mode 100644 index 0000000..e5309c9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-08-15-19-20.bpo-43731.nnVd3h.rst @@ -0,0 +1 @@ +Add an ``encoding`` parameter :func:`logging.fileConfig()`. -- cgit v0.12