In Python, print() and logging are two popular ways to display messages and information during program execution. Although they might seem similar, they serve different purposes and have distinct functionalities.

1. Print()

The print() function is used to display messages on the console. It is simple to use and ideal for small debugging tasks and printing results directly. However, print() has significant limitations:

  • Not configurable: print() always sends output to the standard console and doesn't easily redirect to files or other destinations.
  • No severity levels: All messages are treated the same way, with no distinction between information, warnings, or errors.
  • Lack of structure: There's no standardized format for messages, making filtering and automated analysis difficult.
  • Not persistent: Messages printed to the console can be lost if the console is closed or if there's too much output.

2. Logging

Python's logging module provides a flexible and comprehensive way to handle log messages. It is widely used to track events that occur while software runs. Key features include:

  • Severity levels: logging allows defining different levels of messages such as DEBUG, INFO, WARNING, ERROR, and CRITICAL, helping categorize the importance of messages.
  • Configurable: You can configure different handlers to direct logs to various destinations like files, streams, or remote logging services.
  • Format and structure: Allows defining standardized formats for log messages, making analysis and filtering easier.
  • Persistence: Log messages can be stored in files or databases, ensuring information isn't lost and can be reviewed later.
  • Filters and hierarchies: logging supports filters and logger hierarchies, allowing granular control over which messages are logged and how they are processed.

Diagram

Below is a diagram comparing print() and logging:

|------------------------|                  |-----------------------------|
|        print()         |                  |          logging            |
|------------------------|                  |-----------------------------|
| Easy to use            |                  | Configurable                |
| No severity levels     |   versus         | Severity levels             |
| Output always to console|                  | Multiple destinations       |
| Unstructured           |                  | Standardized format         |
| Non-persistent messages|                  | Persistent messages         |
|------------------------|                  |-----------------------------|

Usage Examples

Example with print()

print("Important information")
print("Warning: Something might be wrong")
print("Error: Something went wrong")

Example with logging

import logging

# Configuring the logger
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s',
                    handlers=[logging.FileHandler("app.log"),
                              logging.StreamHandler()])

logging.info("Important information")
logging.warning("Warning: Something might be wrong")
logging.error("Error: Something went wrong")

 

Conclusion

While print() can be useful for small debugging tasks and quick, simple output, logging is the preferred choice for most professional applications. Logging offers a wide range of functionalities that allow detailed control and better management of log messages, making it essential for developing robust, high-quality software.

Copyright Notice: Unless otherwise indicated, all articles are original to this site, and reproduction must cite the source

Article link:http://pybeginners.com/article/difference-between-python-logging-and-print/