Skip to content

Instantly share code, notes, and snippets.

@vsemionov
Created December 18, 2025 05:30
Show Gist options
  • Select an option

  • Save vsemionov/696495b27fb984cc55c274400a2cc9b2 to your computer and use it in GitHub Desktop.

Select an option

Save vsemionov/696495b27fb984cc55c274400a2cc9b2 to your computer and use it in GitHub Desktop.
import logging
def dump_logging_tree():
root = logging.getLogger()
loggers = logging.root.manager.loggerDict
print('Logging hierarchy:')
def walk(logger, indent=0):
handlers = [type(h).__name__ for h in logger.handlers]
print(
' ' * indent
+ f'- {logger.name or "root"} '
f'(level={logging.getLevelName(logger.level)}, '
f'propagate={logger.propagate}, '
f'handlers={handlers})'
)
for name, obj in loggers.items():
if isinstance(obj, logging.Logger) and obj.parent is logger:
walk(obj, indent + 2)
walk(root)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment