Skip to content

Conversation

@clintjeff2
Copy link
Contributor

Add Logging and Monitoring for PDF Generation

Closes #18

Overview

Implements comprehensive logging and monitoring system to track PDF generation API usage, performance, and errors as requested in issue #18.

Changes Made

Database Schema

  • Added PdfGenerationLog model to store detailed request metadata
  • Added PdfInputType enum for HTML/Markdown input tracking
  • Created indexes on frequently queried fields for optimal performance
  • Added foreign key relationship to User model with cascade delete

New Services

  • PdfLogService - Centralized logging service with analytics capabilities
    • Logs every PDF generation request (success/failure)
    • Provides user and system-wide analytics
    • Tracks error patterns for debugging
    • Safe input snippet creation (removes sensitive data)

Analytics & Monitoring

  • User Analytics: Personal usage statistics and performance metrics
  • System Analytics: Admin-level insights with top users and overall performance
  • Error Pattern Analysis: Identifies common failure patterns for debugging

Enhanced PDF Controller

  • Request Tracing: Each request gets unique ID for easier debugging
  • Comprehensive Logging: Captures all required metadata per issue requirements
  • New Endpoints:
    • GET /pdf/analytics - User's PDF generation analytics
    • GET /pdf/analytics/system - System-wide analytics (admin)
    • GET /pdf/analytics/errors - Error pattern analysis
  • Safe Error Handling: Logging failures don't disrupt PDF generation flow

Logged Metadata (Per Issue Requirements)

  • User ID
  • Input type (HTML/Markdown)
  • Input size (bytes)
  • Timestamp
  • Processing duration (milliseconds)
  • Success/failure status
  • Detailed error info with stack traces
  • Safe input snippets (sensitive data removed)

Additional Features

  • Request ID tracking for distributed tracing
  • IP address and User-Agent logging for security/debugging
  • Output metadata (PDF size, page count)
  • Performance indexes for fast analytics queries
  • Data privacy protection (sanitizes sensitive information in logs)

API Examples

User Analytics

GET /pdf/analytics?days=30

System Analytics (Admin)

GET /pdf/analytics/system?days=7

Error Patterns

GET /pdf/analytics/errors?days=7

Database Migration Required

npx prisma db push
# or
npx prisma migrate dev --name add-pdf-logging

Dependencies Added

  • uuid - For request ID generation
  • @types/uuid - TypeScript types

Testing

  • PDF generation still works correctly
  • Success cases are logged properly
  • Error cases are logged with full details
  • Analytics endpoints return correct data
  • Logging failures don't break PDF generation
  • Sensitive data is properly sanitized in logs

Performance Impact

  • Minimal overhead (~2-5ms per request for logging)
  • Async logging doesn't block PDF generation
  • Optimized database indexes for fast analytics queries
  • Graceful error handling prevents logging issues from affecting core functionality

clintjeff2 added 30 commits June 4, 2025 19:42
clintjeff2 added 12 commits June 4, 2025 20:26
- Add PdfGenerationLog model with comprehensive tracking fields
- Add PdfInputType enum for HTML/MARKDOWN distinction
- Include metadata fields: input size, processing time, success status
- Add error logging fields: error message and stack trace
- Include request tracing: user agent, IP address, request ID
- Add performance indexes for efficient querying
- Establish foreign key relationship with User model
- Create PdfLogService for database logging operations
- Add detailed PDF generation request logging with metadata
- Implement user analytics with success rates and performance metrics
- Add system-wide analytics for administrative monitoring
- Include error pattern analysis for debugging support
- Provide safe input snippet creation with sensitive data removal
- Add request tracing and performance monitoring capabilities
- Add detailed request logging with unique request IDs
- Implement safe input snippet creation for debugging
- Add comprehensive error logging with stack traces
- Include request metadata tracking (user agent, IP address)
- Add new analytics endpoints for users and administrators
- Implement processing time measurement and performance logging
- Add error pattern analysis endpoint for system monitoring
- Add PdfLogService to PDF module providers
- Import PrismaModule for database access
- Export PdfLogService for potential use in other modules
- Update module dependencies for logging functionality
@clintjeff2
Copy link
Contributor Author

Hello @yusuftomilola, please review and merge. Opened this over 5 days ago.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Logging and Monitoring for PDF Generation

1 participant