Logging to Both File and Stdout in Python with the Logging Module
When utilizing the Python logging module, it's desirable to have log messages output not only to the specified log file but also to stdout for immediate visibility. To achieve this, the logging module provides a straightforward solution.
The logging configuration relies on handlers to direct output. By adding a logging.StreamHandler() instance to the root logger, it's possible to send messages to stdout in addition to their intended destinations.
An example of configuring a stream handler for stdout output:
<code class="python">import logging import sys # Get the root logger root = logging.getLogger() # Set the root logger level to DEBUG root.setLevel(logging.DEBUG) # Create a stream handler and set its level to DEBUG handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) # Create a formatter to format the log messages formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) # Add the handler to the root logger root.addHandler(handler)</code>
By implementing this configuration, it becomes unnecessary to duplicate log messages using both logger methods and stdout print statements. Loggers such as mylogger.critical("something failed") will output to both the designated log file and stdout, providing immediate visibility while maintaining proper logging practices.
The above is the detailed content of How to Log to Both File and Stdout using the Python Logging Module?. For more information, please follow other related articles on the PHP Chinese website!