New submission from Stéphane Blondon <stephane.blon...@gmail.com>:

Currently, logging.root.manager.loggerDict is usable to do a homemade traversal 
of the loggers tree. However, it's not a public interface. Adding a 
'logger.getChildren()' method would help to implement the traversal. The method 
would return a set of loggers.


Usage example:
>>> import logging
>>> logging.basicConfig(level=logging.CRITICAL)
>>> root_logger = logging.getLogger()
<RootLogger root (CRITICAL)>
>>> root_logger.getChildren()
set()
>>> a_logger = logging.getLogger("a")
>>> root_logger.getChildren()
{<Logger a. (CRITICAL)>}
>>> logging.getLogger('a.b').setLevel(logging.DEBUG)
>>> _ = logging.getLogger('a.c')
>>> a_logger.getChildren()
{<Logger a.c (CRITICAL)>, <Logger a.b (DEBUG)>}


With such method, traverse the tree will be obvious to write with a recursive 
function.


Use cases:
 - to check all the loggers are setted up correctly. I wrote a small function 
to get all loggers, and log on every level to check the real behaviour.
 - to draw the loggers tree like logging_tree library 
(https://pypi.org/project/logging_tree/). I didn't ask to logging_tree's 
maintainer but I don't think he would use such function because the library 
works for huge range of python releases.


I plan to write a PR if someone thinks it's a good idea.

----------
components: Library (Lib)
messages: 401006
nosy: sblondon
priority: normal
severity: normal
status: open
title: Easier loggers traversal tree with a logger.getChildren method
type: enhancement
versions: Python 3.11

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45095>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to