3.3 KiB
3.3 KiB
Logging and Monitoring
Purpose
Explain runtime logging, request tracing, and resource tracking implemented in code, plus where logs are written.
Code Locations (exact paths)
- Django logging config:
backend/igny8_core/settings.py(LOGGING,PUBLISH_SYNC_LOG_DIR) - Request ID middleware:
backend/igny8_core/middleware/request_id.py - Resource tracking middleware:
backend/igny8_core/middleware/resource_tracker.py - Publish/sync logging categories:
publish_sync,wordpress_api,webhooksloggers insettings.py
High-Level Responsibilities
- Attach request IDs to each request/response for traceability.
- Optionally track CPU/memory/I/O per request for authenticated admin/developer users.
- Persist publish/sync logs to rotating files and console.
Detailed Behavior
- Request ID:
RequestIDMiddlewareassigns a UUID per request; adds headerX-Request-ID(exposed via CORSx-resource-tracking-id).
- Resource tracking:
ResourceTrackingMiddlewaremeasures CPU/memory/I/O deltas per request for authenticated admin/developer users; stores metrics in cache; can be toggled via custom headerx-debug-resource-tracking.
- Logging configuration (
settings.py):- Log directory:
logs/publish-sync-logs(auto-created). - Handlers: console + rotating file handlers (10 MB, 10 backups) for
publish_sync.log,wordpress-api.log,webhooks.log. - Formatters: verbose general formatter; publish_sync formatter with timestamp/level/message.
- Loggers:
publish_sync,wordpress_api,webhooksall INFO level, non-propagating.
- Log directory:
- Static files and general Django logging fall back to default console (not customized beyond above).
Data Structures / Models Involved (no code)
- None; logging is operational.
Execution Flow
- Incoming request → RequestIDMiddleware → AccountContextMiddleware → ResourceTrackingMiddleware → view.
- Views/services log using standard
logging.getLogger('publish_sync')etc.; output to console and rotating files.
Cross-Module Interactions
- WordPress integration and publish flows should log to
wordpress_api/publish_syncto capture sync diagnostics. - CORS exposes request ID header so frontend can correlate with logs.
State Transitions (if applicable)
- Log rotation occurs when files exceed 10 MB (backupCount 10).
Error Handling
- Logging failures fall back to console; middleware errors propagate via unified exception handler.
Tenancy Rules
- Request ID and resource tracking apply to all requests; data remains in application logs scoped by account within log content.
Billing Rules (if applicable)
- None.
Background Tasks / Schedulers (if applicable)
- Celery tasks can log using same loggers; no dedicated Celery handler configured beyond console.
Key Design Considerations
- Request ID early in middleware to ensure downstream logs include correlation ID.
- Resource tracking limited to privileged users to avoid overhead for all traffic.
How Developers Should Work With This Module
- Use named loggers (
publish_sync,wordpress_api,webhooks) for relevant flows to keep logs organized. - When adding new log domains, extend
LOGGINGinsettings.pywith dedicated handlers/formatters as needed. - Surface request IDs in error responses to aid log correlation (already enabled via unified handler).