- __init__() function
- Aliases
- and operator
- argparse
- Arrays
- Booleans
- Break statement
- Bytes
- Classes
- Code blocks
- Comments
- Conditional statements
- Console
- Context manager
- Data class
- Data structures
- Data visualization
- datetime module
- Decorator
- Dictionaries
- Docstrings
- Encapsulation
- enum
- enumerate() function
- Equality operator
- Error handling
- Exception handling
- False
- File handling
- Filter()
- Flask framework
- Floats
- Floor division
- For loops
- Formatted strings
- Functions
- Generator
- Globals()
- Greater than operator
- Greater than or equal to operator
- If statement
- in operator
- Indices
- Inequality operator
- Inheritance
- Integers
- Iterator
- Lambda function
- len() Function
- Less than operator
- Less than or equal to operator
- List append() method
- List comprehension
- List count()
- List insert() method
- List pop() method
- List reverse() method
- List sort() method
- Lists
- Logging
- map() function
- Match statement
- Math module
- Merge sort
- Min()
- Modules
- Modulo operator
- Multiline comment
- Multiprocessing
- Multithreading
- None
- not operator
- NumPy library
- OOP
- or operator
- Override method
- Pandas library
- Parameters
- pathlib module
- Pickle
- Polymorphism
- print() function
- Property()
- Random module
- range() function
- Raw strings
- Recursion
- Reduce()
- Regular expressions
- requests Library
- return statement
- round() function
- Script
- Sets
- SQLite
- String decode()
- String find()
- String join() method
- String replace() method
- String split() method
- String strip()
- Strings
- Ternary operator
- time.sleep() function
- True
- try...except statement
- Tuples
- Type casting
- Variables
- Virtual environment
- While loops
- Zip function
PYTHON
Python Logging: Syntax, Usage, and Examples
Python logging is a built-in module that allows you to track events in your application. It helps you debug, monitor, and analyze errors by recording messages at different severity levels. Instead of using print(), logging provides a structured approach to capturing information about program execution.
How to Use Python Logging
The logging module provides a flexible system for creating logs. Here’s a basic example of setting up logging:
import logging
# Configure logging
logging.basicConfig(level=logging.DEBUG, format="%(levelname)s: %(message)s")
# Log messages at different 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.")
basicConfig(): Configures the logging system.level=logging.DEBUG: Sets the lowest severity level that will be logged.format="%(levelname)s: %(message)s": Defines the output format.debug(),info(),warning(),error(),critical(): Generate logs with different levels of severity.
When to Use Python Logging
Logging is essential for debugging, auditing, and performance monitoring. Here are some common scenarios where logging improves efficiency:
Debugging Applications
Logs help identify issues without modifying the code. You can trace function calls, variable values, and error occurrences.
import logging
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
logging.debug(f"Dividing {a} by {b}")
if b == 0:
logging.error("Division by zero attempted.")
return None
return a / b
result = divide(10, 0)
Saving Logs to a File
If you want to save logs for later analysis, you can write them to a file.
import logging
logging.basicConfig(filename="app.log", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
logging.info("Application started")
Handling Errors in Web Applications
Web frameworks like Flask and Django use logging to track user actions and errors.
import logging
logging.basicConfig(level=logging.ERROR)
try:
1 / 0
except ZeroDivisionError:
logging.exception("An error occurred")
Examples of Python Logging
Using a Custom Logger
Creating a custom logger allows more control over logging behavior.
import logging
logger = logging.getLogger("custom_logger")
logger.setLevel(logging.INFO)
handler = logging.FileHandler("custom.log")
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Custom logger message")
Logging in a Multi-Threaded Program
In multi-threaded applications, logging ensures thread safety and helps debug concurrency issues.
import logging
import threading
logging.basicConfig(level=logging.DEBUG, format="%(threadName)s: %(message)s")
def task():
logging.info("Thread is running")
threads = [threading.Thread(target=task) for _ in range(3)]
for thread in threads:
thread.start()
for thread in threads:
thread.join()
Using Logging Filters
Filters allow you to exclude certain log messages based on conditions.
import logging
class NoWarningsFilter(logging.Filter):
def filter(self, record):
return record.levelno < logging.WARNING
logger = logging.getLogger()
handler = logging.StreamHandler()
handler.addFilter(NoWarningsFilter())
logger.addHandler(handler)
logger.warning("This warning will not be logged.")
logger.info("This info message will be logged.")
Learn More About Python Logging
Logging Levels and Their Uses
DEBUG: Detailed information for diagnosing problems.INFO: General events in a program’s execution.WARNING: Something unexpected happened, but the program continues.ERROR: A problem occurred, but execution continues.CRITICAL: A severe issue that may cause the program to stop.
Logging Exceptions
Instead of printing stack traces, logging exceptions makes debugging easier.
import logging
try:
open("nonexistent_file.txt")
except FileNotFoundError:
logging.exception("File not found error")
Formatting Logs
Using Formatter, you can customize log output.
import logging
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=logging.INFO
)
logging.info("Formatted log message")
Filtering Sensitive Data
When logging user input or API responses, exclude sensitive data.
import logging
logging.basicConfig(level=logging.INFO)
password = "super_secret_password"
masked_password = "*" * len(password)
logging.info(f"User logged in with password: {masked_password}")
Logging to Multiple Outputs
You can log messages to both the console and a file.
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("app.log")
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
logger.debug("Logging to multiple outputs")
Using a Rotating Log File
For applications that generate large log files, use a rotating file handler to limit file size.
import logging
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler("app.log", maxBytes=1024, backupCount=3)
logging.basicConfig(handlers=[handler], level=logging.INFO)
for i in range(100):
logging.info(f"Log entry {i}")
Logging Configuration with DictConfig
Instead of calling basicConfig(), you can configure logging with dictConfig().
import logging.config
config = {
"version": 1,
"formatters": {
"detailed": {
"format": "%(asctime)s - %(levelname)s - %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "detailed"
}
},
"root": {
"level": "DEBUG",
"handlers": ["console"]
}
}
logging.config.dictConfig(config)
logging.info("Logging configured with dictConfig")
When to Use Logging Instead of Print
- For debugging: Logging captures details without cluttering the console.
- For production applications: Logs can be written to files and analyzed later.
- For structured error handling: Logging helps track issues systematically.
Python logging is a powerful tool that helps you manage application events, debug issues, and store execution details. Whether you're running a simple script or a large-scale application, logging improves visibility and helps maintain code reliability.
Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.