Python6 min read

Python Logging

Implement proper logging in Python applications.

David Miller
December 18, 2025
0.0k0

Track application behavior.

Basic Logging

```python import logging

logging.basicConfig(level=logging.INFO)

logging.debug("Debug message") logging.info("Info message") logging.warning("Warning message") logging.error("Error message") logging.critical("Critical message") ```

Log to File

```python import logging

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

logging.info("Application started") logging.error("An error occurred") ```

Multiple Handlers

```python import logging

logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG)

Console handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO)

File handler file_handler = logging.FileHandler('errors.log') file_handler.setLevel(logging.ERROR)

Formatter formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) console_handler.setFormatter(formatter) file_handler.setFormatter(formatter)

logger.addHandler(console_handler) logger.addHandler(file_handler)

logger.debug("Debug info") logger.error("Error info") ```

Log Exceptions

```python import logging

logging.basicConfig(level=logging.ERROR)

try: result = 10 / 0 except Exception as e: logging.error("Error occurred", exc_info=True) ```

Custom Logger

```python import logging

def get_logger(name): logger = logging.getLogger(name) logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) handler.setFormatter(formatter) logger.addHandler(handler) return logger

logger = get_logger('my_app') logger.info("App started") ```

Remember

- Use appropriate log levels - Log to files for production - Include timestamps - Don't log sensitive data

#Python#Advanced#Logging