classification
Title: setting a logging Handler name
Type: enhancement Stage:
Components: Documentation, Library (Lib) Versions: Python 3.8
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: bcohen, docs@python, vinay.sajip
Priority: normal Keywords:

Created on 2021-01-28 20:17 by bcohen, last changed 2021-01-28 20:17 by bcohen.

Messages (1)
msg385880 - (view) Author: Brett Cohen (bcohen) Date: 2021-01-28 20:17
When using the logging module to add a new handler, the documentation doesn't mention the ability to set the name of the handler. It turns out that it's actually a supported feature by using:

    handler_instance.set_name("YOUR_NAME_HERE")

I'd suggest updating the documentation to indicate the ability to set the name of the handler. It'd be very nice if the name was settable in the constructor of the Handler class. This could be done by including an optional `name` argument that defaults to None:

    class Handler(Filterer):
        def __init__(self, level=NOTSET, name=None):
            Filterer.__init__(self)
            self._name = name
            ...
            ...

I noticed the problem when trying to call logging.config.dictConfig with a config which specified a handler (it crashes: `ValueError: No handler found with name 'my_handler'`).

I initially thought to manually alter the _handlers directly since the docs didn't indicate how to set the name. After digging into the source code I found the undocumented `set_name` function.
History
Date User Action Args
2021-01-28 20:17:02bcohencreate