Logger Hierarchies and name

In Python’s logging module, loggers are organized in a hierarchical structure. This hierarchy allows you to control the logging level for different parts of your application. The __name__ attribute is used to identify the current module or package, and it’s often used to create unique logger names.

Creating Logger Hierarchies

When you create a logger using getLogger(__name__), the logger’s name is derived from the current module’s __name__ attribute. This creates a hierarchical structure, where loggers with longer names are children of loggers with shorter names. For example, if you have a module named app.utils, the logger created within that module will have the name app.utils.

Propagation

By default, log messages from a child logger are propagated to its parent loggers. This means that if you set the logging level for a parent logger, it will affect all of its child loggers.

Example:

Python

import logging

logger1 = logging.getLogger("app.module1")
logger2 = logging.getLogger("app.module2")

logger1.setLevel(logging.DEBUG)
logger2.setLevel(logging.INFO)

logger1.debug("This message will be logged")
logger2.debug("This message will not be logged")

In this example, logger1 is a parent of logger2. Since logger1 has a logging level of DEBUG, all messages from logger1 and its children will be logged. However, because logger2 has a logging level of INFO, messages with a level below INFO (such as DEBUG) will not be logged by logger2.

Disabling Propagation

To prevent log messages from propagating to parent loggers, you can set the propagate attribute of a logger to False:

Python

logger2.propagate = False

Using Logger Hierarchies Effectively

By understanding logger hierarchies and the __name__ attribute, you can effectively control the logging behavior in your FastAPI applications. You can create separate loggers for different parts of your application and set appropriate logging levels to capture the information you need. This can help you debug issues more efficiently and maintain a clean and organized logging setup.

Configuring Logging for FastAPI Apps
Python Logging: Loggers, Handlers, and Formatters

Get industry recognized certification – Contact us

keyboard_arrow_up
Open chat
Need help?
Hello 👋
Can we help you?