2 minute read

Debugging is an essential part of coding. Most of the cases we debug code using print method which create problem for deployment. Python offers a powerful logging framework that allows developers to track and manage messages generated during the execution of a program. While print statements can be useful for quick debugging, a structured logging system provides a more flexible and scalable approach.

Why Use Logging?

  1. Granular Control: With logging, you can control the level of detail you want to capture (debug, info, warning, error, critical). This allows you to focus on specific areas of interest and filter out less relevant information.
  2. Flexibility: Logs can be directed to various outputs (console, files, remote servers, etc.) with minimal code changes. Different handlers can be used for different purposes, like debugging during development and writing to a file in production.
  3. Timestamps and Context: Logs include timestamps by default, providing a chronological record of events. Additional context can be added to each log message, aiding in the understanding of the circumstances under which an event occurred.

as your Python script.

User Write short blog post about logging in python ChatGPT Simplifying Debugging with Logging in Python Python offers a powerful logging framework that allows developers to track and manage messages generated during the execution of a program. While print statements can be useful for quick debugging, a structured logging system provides a more flexible and scalable approach.

Why Use Logging?

  1. Granular Control: With logging, you can control the level of detail you want to capture (debug, info, warning, error, critical). This allows you to focus on specific areas of interest and filter out less relevant information.
  2. Flexibility: Logs can be directed to various outputs (console, files, remote servers, etc.) with minimal code changes. Different handlers can be used for different purposes, like debugging during development and writing to a file in production.
  3. Timestamps and Context: Logs include timestamps by default, providing a chronological record of events. Additional context can be added to each log message, aiding in the understanding of the circumstances under which an event occurred.

How to Get Started

  1. Importing the Logging Module:

     import logging
    
  2. Setting Up the Logger:

     logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    

    basicConfig() configures the logging system. In this example, it sets the log file, the minimum log level (INFO), and the format of the log messages.

  3. Using Logging Levels:

     logging.debug('This is a debug message')
     logging.info('This is an info message')
     logging.warning('This is a warning message')
     logging.error('This is an error message')
     logging.critical('This is a critical message')
    
  4. Customizing Log Messages:

     logging.info('User %s logged in', username)
    

You can include variables or additional context in log messages for better clarity.

Logging in modular code

import logging  # 1. Import the logging library

# 2. Set up basic logging configuration
logging.basicConfig(
    level=logging.INFO, 
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger('mymodule')  # Use the provided logging name

class MyModule:
    def __init__(self, ...):  # Existing parameters

        logger.info("Initializing MyModule...")  # 3. Add logging statements

        # ... rest of the method ...

    def hello(self, message):
        logger.info(f"Received message: {message}")

        # ... rest of the method ...

References

  • Partial part of this blog generated using chatgpt
  • Rest of the part learn from different blog post

Categories:

Updated:

Comments