Skip to content

Python 3.12 breaks backwards compatibility for logging configuration#111615

@egor-tensin

Description

@egor-tensin

Bug report

Bug description:

This worked fine on previous versions:

importloggingimportlogging.configimportlogging.handlersimportmultiprocessingasmpdefmain(): config={'version': 1, 'handlers':{'sink':{'class': 'logging.handlers.QueueHandler', 'queue': mp.get_context('spawn').Queue(), }, }, 'root':{'handlers': ['sink'], 'level': 'DEBUG', }, } logging.config.dictConfig(config) if__name__=='__main__': main()

With Python 3.12, it drops an error:

Traceback (most recent call last): File "/home/egor/.pyenv/versions/3.12-dev/lib/python3.12/logging/config.py", line 581, in configure handler = self.configure_handler(handlers[name]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/egor/.pyenv/versions/3.12-dev/lib/python3.12/logging/config.py", line 786, in configure_handler raise ValueError('No handlers specified for a QueueHandler') ValueError: No handlers specified for a QueueHandler The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/egor/workspace/personal/cimple/../test.py", line 25, in <module> main() File "/home/egor/workspace/personal/cimple/../test.py", line 21, in main logging.config.dictConfig(config) File "/home/egor/.pyenv/versions/3.12-dev/lib/python3.12/logging/config.py", line 912, in dictConfig dictConfigClass(config).configure() File "/home/egor/.pyenv/versions/3.12-dev/lib/python3.12/logging/config.py", line 588, in configure raise ValueError('Unable to configure handler ' ValueError: Unable to configure handler 'sink' 

More than that, even the example in the Logging Cookbook is broken now: https://docs.python.org/3/howto/logging-cookbook.html#a-more-elaborate-multiprocessing-example (fails with the same error).

Version info:

# python -VV Python 3.12.0+ (heads/3.12:f108785, Nov 1 2023, 19:47:19) [GCC 13.2.1 20230801] 

CPython versions tested on:

3.12

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

Labels

3.12only security fixes3.13bugs and security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions