๐ Python logging Module โ Proper Application Logging
Real applications need structured logs, not print() statements. Python's logging module provides levels, formatting, and file logging.
Set logging level via environment variable in production: LOG_LEVEL=WARNING. Never use level=DEBUG in production.
๐ป Code Example:
import logging from datetime import datetime # 1. Basic logging setup logging.basicConfig( level=logging.DEBUG, format='%(asctime)s | %(levelname)-8s | %(name)s | %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) logger = logging.getLogger('pynfinity.app') logger.debug("Debug info โ shown only in development") logger.info("User santoshtvk logged in") logger.warning("Disk usage above 80%") logger.error("Failed to load course module") logger.critical("Database connection lost!") # 2. Logging to a file + console simultaneously file_handler = logging.FileHandler('pynfinity.log') file_handler.setLevel(logging.WARNING) console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s | %(levelname)s | %(message)s') file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) app_logger = logging.getLogger('pynfinity') app_logger.addHandler(file_handler) app_logger.addHandler(console_handler) app_logger.info("Pynfinity server started") app_logger.error("404 Not Found: /invalid-route") # 3. Log exceptions with traceback try: result = 10 / 0 except ZeroDivisionError: logger.exception("Math error in calculation") # Auto-includes traceback!
| Concept | Key Takeaway |
|---|---|
| DEBUG | Detailed diagnostic info โ dev only |
| INFO | Normal operational messages |
| WARNING | Something unexpected โ but still working |
| ERROR | A function/operation failed |
| CRITICAL | Very serious error โ may crash application |
Keep exploring and happy coding! ๐