bpo-31080: Allowed logging.config.fileConfig() to accept both args and kwargs. (GH-2979)
This commit is contained in:
parent
de34cbe9cd
commit
6ea56d2ebc
|
@ -715,7 +715,12 @@ a corresponding section in the configuration file.
|
||||||
The ``args`` entry, when :func:`eval`\ uated in the context of the ``logging``
|
The ``args`` entry, when :func:`eval`\ uated in the context of the ``logging``
|
||||||
package's namespace, is the list of arguments to the constructor for the handler
|
package's namespace, is the list of arguments to the constructor for the handler
|
||||||
class. Refer to the constructors for the relevant handlers, or to the examples
|
class. Refer to the constructors for the relevant handlers, or to the examples
|
||||||
below, to see how typical entries are constructed.
|
below, to see how typical entries are constructed. If not provided, it defaults
|
||||||
|
to ``()``.
|
||||||
|
|
||||||
|
The optional ``kwargs`` entry, when :func:`eval`\ uated in the context of the
|
||||||
|
``logging`` package's namespace, is the keyword argument dict to the constructor
|
||||||
|
for the handler class. If not provided, it defaults to ``{}``.
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
|
@ -754,6 +759,7 @@ below, to see how typical entries are constructed.
|
||||||
level=WARN
|
level=WARN
|
||||||
formatter=form07
|
formatter=form07
|
||||||
args=('localhost', 'from@abc', ['user1@abc', 'user2@xyz'], 'Logger Subject')
|
args=('localhost', 'from@abc', ['user1@abc', 'user2@xyz'], 'Logger Subject')
|
||||||
|
kwargs={'timeout': 10.0}
|
||||||
|
|
||||||
[handler_hand08]
|
[handler_hand08]
|
||||||
class=handlers.MemoryHandler
|
class=handlers.MemoryHandler
|
||||||
|
@ -767,6 +773,7 @@ below, to see how typical entries are constructed.
|
||||||
level=NOTSET
|
level=NOTSET
|
||||||
formatter=form09
|
formatter=form09
|
||||||
args=('localhost:9022', '/log', 'GET')
|
args=('localhost:9022', '/log', 'GET')
|
||||||
|
kwargs={'secure': True}
|
||||||
|
|
||||||
Sections which specify formatter configuration are typified by the following.
|
Sections which specify formatter configuration are typified by the following.
|
||||||
|
|
||||||
|
|
|
@ -143,9 +143,11 @@ def _install_handlers(cp, formatters):
|
||||||
klass = eval(klass, vars(logging))
|
klass = eval(klass, vars(logging))
|
||||||
except (AttributeError, NameError):
|
except (AttributeError, NameError):
|
||||||
klass = _resolve(klass)
|
klass = _resolve(klass)
|
||||||
args = section["args"]
|
args = section.get("args", '()')
|
||||||
args = eval(args, vars(logging))
|
args = eval(args, vars(logging))
|
||||||
h = klass(*args)
|
kwargs = section.get("kwargs", '{}')
|
||||||
|
kwargs = eval(kwargs, vars(logging))
|
||||||
|
h = klass(*args, **kwargs)
|
||||||
if "level" in section:
|
if "level" in section:
|
||||||
level = section["level"]
|
level = section["level"]
|
||||||
h.setLevel(level)
|
h.setLevel(level)
|
||||||
|
|
|
@ -1273,7 +1273,7 @@ class ConfigFileTest(BaseTest):
|
||||||
datefmt=
|
datefmt=
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# config7 adds a compiler logger.
|
# config7 adds a compiler logger, and uses kwargs instead of args.
|
||||||
config7 = """
|
config7 = """
|
||||||
[loggers]
|
[loggers]
|
||||||
keys=root,parser,compiler
|
keys=root,parser,compiler
|
||||||
|
@ -1304,7 +1304,7 @@ class ConfigFileTest(BaseTest):
|
||||||
class=StreamHandler
|
class=StreamHandler
|
||||||
level=NOTSET
|
level=NOTSET
|
||||||
formatter=form1
|
formatter=form1
|
||||||
args=(sys.stdout,)
|
kwargs={'stream': sys.stdout,}
|
||||||
|
|
||||||
[formatter_form1]
|
[formatter_form1]
|
||||||
format=%(levelname)s ++ %(message)s
|
format=%(levelname)s ++ %(message)s
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Allow `logging.config.fileConfig` to accept kwargs and/or args.
|
Loading…
Reference in New Issue