[New-bugs-announce] [issue17521] fileConfig() disables any previously-used "named" loggers, even when getLogger() is called again.

Bob Igo report at bugs.python.org
Fri Mar 22 17:45:50 CET 2013


New submission from Bob Igo:

I am aware of the described behavior of fileConfig() when disable_existing_loggers is True, but what I am seeing happens whether disable_existing_loggers is True or False, and it also affects loggers obtained via future, fresh calls to getLogger(name).

Here's an example where disable_existing_loggers is True, but as I said, the same happens when it's False:

>>> import logging.config
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger("foo")
>>> logger.critical("test")
2013-03-21 23:33:04,621    foo    CRITICAL    test
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger("foo")
>>> logger.critical("test")
>>>

Note that the final logging attempt silently fails. The thing that appears to break logging for ever is the second fileConfig() call, and not the following getLogger() call.

I can get a fresh logger with a different name and use it. (Continued from the above session):

>>> logger = logging.getLogger("bar")
>>> logger.critical("test")
2013-03-21 23:38:35,613    bar    CRITICAL    test


This issue does not affect the root logger, when no name is given to getLogger():

>>> import logging.config
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger()
>>> logger.critical("test")
2013-03-22 11:49:29,957    root    CRITICAL    test
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger()
>>> logger.critical("test")
2013-03-22 11:49:44,966    root    CRITICAL    test


However, it _does_ affect the root logger when "root" is given as the name to getLogger():

>>> import logging.config
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger("root")
>>> logger.critical("test")
2013-03-22 12:42:49,742	root	CRITICAL	test
>>> logging.config.fileConfig('unit_test_logging.conf')
>>> logger = logging.getLogger("root")
>>> logger.critical("test")
>>> 

I can attach the logging config file if desired, but it looks like the issue is unrelated. I will say that I'm relying on the root logger for all my logging, but that I use a different name to differentiate how the log is written.

----------
components: Library (Lib)
messages: 184982
nosy: Bob.Igo
priority: normal
severity: normal
status: open
title: fileConfig() disables any previously-used "named" loggers, even when getLogger() is called again.
type: behavior
versions: Python 2.7

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue17521>
_______________________________________


More information about the New-bugs-announce mailing list