Python Integration
Integrate error tracking into your Python applications
Flask Integration
1. Install Dependencies
pip install requests
2. Create Error Logger Module
# error_logger.py
import requests
import traceback
import os
API_KEY = os.getenv('ERROR_LOG_API_KEY', 'YOUR_API_KEY')
SECURITY_KEY = os.getenv('ERROR_LOG_SECURITY_KEY', 'YOUR_SECURITY_KEY')
WEBHOOK_URL = f'https://your-domain.com/api/ingest/{API_KEY}'
def log_error(exception, context=None):
try:
payload = {
'message': str(exception),
'stackTrace': traceback.format_exc()
}
if context:
payload.update(context)
requests.post(
WEBHOOK_URL,
json=payload,
headers={'X-Security-Key': SECURITY_KEY},
timeout=5
)
except Exception as e:
# Silently fail
print(f'Failed to log error: {e}')
3. Flask Error Handler
from flask import Flask, jsonify, request
from error_logger import log_error
app = Flask(__name__)
@app.errorhandler(Exception)
def handle_exception(e):
# Log to ErrorLogDashboard
log_error(e, {
'url': request.url,
'method': request.method,
'ip': request.remote_addr
})
return jsonify({'error': 'Internal server error'}), 500
@app.route('/api/users/<int:user_id>')
def get_user(user_id):
try:
# Your code here
return jsonify({'user': 'data'})
except Exception as e:
log_error(e, {'user_id': user_id})
return jsonify({'error': 'Failed to fetch user'}), 500
if __name__ == '__main__':
app.run(debug=True)
Django Integration
Custom Middleware
# middleware/error_logging.py
from error_logger import log_error
class ErrorLoggingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
return self.get_response(request)
def process_exception(self, request, exception):
log_error(exception, {
'url': request.path,
'method': request.method,
'user': str(request.user)
})
return None # Let Django handle the response
# In settings.py:
MIDDLEWARE = [
# ... other middleware
'middleware.error_logging.ErrorLoggingMiddleware',
]
FastAPI Integration
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import JSONResponse
from error_logger import log_error
app = FastAPI()
@app.exception_handler(Exception)
async def global_exception_handler(request: Request, exc: Exception):
log_error(exc, {
'url': str(request.url),
'method': request.method
})
return JSONResponse(
status_code=500,
content={'error': 'Internal server error'}
)
@app.get("/users/{user_id}")
async def get_user(user_id: int):
try:
# Your code
return {"user": "data"}
except Exception as e:
log_error(e, {'user_id': user_id})
raise HTTPException(status_code=500)
Best Practice: Use environment variables or python-decouple to manage your API keys securely.