module:
  name: "logging"
  version: "1.0.0"
  description: "Sistema completo de logging estructurado con Winston y auditoría"
  category: "monitoring"
  author: "Backend MCP"
  license: "MIT"

triggers:
  - condition: "user_wants_logging"
    value: true
  - condition: "needs_monitoring"
    value: true
  - condition: "requires_audit"
    value: true
  - condition: "has_debugging"
    value: true
  - keywords:
    - "logging"
    - "logs"
    - "winston"
    - "auditoría"
    - "monitoring"
    - "debug"
    - "error tracking"
    - "observability"

entry_points:
  service: "templates/logger.service.ts.hbs"
  config: "templates/winston.config.ts.hbs"
  middleware: "templates/audit.middleware.ts.hbs"
  interceptor: "templates/logging.interceptor.ts.hbs"

dependencies:
  required:
    - "database"
  optional:
    - "auth"
    - "email"

environment_variables:
  required: []
  optional:
    - LOG_LEVEL
    - LOG_FORMAT
    - LOG_FILE_PATH
    - LOG_MAX_SIZE
    - LOG_MAX_FILES
    - LOG_DATE_PATTERN
    - ENABLE_CONSOLE_LOG
    - ENABLE_FILE_LOG
    - ENABLE_DATABASE_LOG
    - SENTRY_DSN
    - ELASTICSEARCH_URL

features:
  - "structured-logging"
  - "multiple-transports"
  - "log-rotation"
  - "audit-trail"
  - "error-tracking"
  - "performance-monitoring"
  - "request-logging"
  - "database-logging"
  - "file-logging"
  - "console-logging"
  - "log-filtering"
  - "log-formatting"

api_endpoints:
  - "GET /logs"
  - "GET /logs/audit"
  - "GET /logs/errors"
  - "GET /logs/performance"
  - "POST /logs/search"
  - "GET /logs/stats"

generated_files:
  - "src/logging/logger.service.ts"
  - "src/logging/winston.config.ts"
  - "src/logging/audit.middleware.ts"
  - "src/logging/logging.interceptor.ts"
  - "src/logging/audit.service.ts"
  - "src/logging/logging.controller.ts"
  - "src/logging/logging.module.ts"

integration:
  database_tables:
    - "audit_logs"
    - "error_logs"
    - "performance_logs"
    - "request_logs"
  auth_integration:
    - "user-action-tracking"
    - "login-audit"
    - "permission-logging"
  middleware_integration:
    - "request-response-logging"
    - "error-capture"
    - "performance-timing"

log_levels:
  - "error"
  - "warn"
  - "info"
  - "http"
  - "verbose"
  - "debug"
  - "silly"

transports:
  - name: "console"
    description: "Logging a consola para desarrollo"
    config:
      - "LOG_LEVEL"
      - "ENABLE_CONSOLE_LOG"
  - name: "file"
    description: "Logging a archivos con rotación"
    config:
      - "LOG_FILE_PATH"
      - "LOG_MAX_SIZE"
      - "LOG_MAX_FILES"
      - "LOG_DATE_PATTERN"
  - name: "database"
    description: "Logging a base de datos"
    config:
      - "ENABLE_DATABASE_LOG"
  - name: "elasticsearch"
    description: "Logging a Elasticsearch"
    config:
      - "ELASTICSEARCH_URL"
  - name: "sentry"
    description: "Error tracking con Sentry"
    config:
      - "SENTRY_DSN"

audit_events:
  - "user_login"
  - "user_logout"
  - "user_register"
  - "password_change"
  - "data_create"
  - "data_update"
  - "data_delete"
  - "permission_change"
  - "system_config_change"
  - "api_access"

performance_metrics:
  - "request_duration"
  - "database_query_time"
  - "memory_usage"
  - "cpu_usage"
  - "response_size"
  - "concurrent_requests"

log_formats:
  - name: "json"
    description: "Formato JSON estructurado"
  - name: "simple"
    description: "Formato simple para desarrollo"
  - name: "combined"
    description: "Formato combinado con timestamp"
  - name: "custom"
    description: "Formato personalizable"

usage_examples:
  - "API request/response logging"
  - "Error tracking and monitoring"
  - "User action auditing"
  - "Performance monitoring"
  - "Security event logging"
  - "Database operation tracking"

ai_instructions: |
  Use this module when:
  - User mentions "logging", "logs", "monitoring", "audit", "debug"
  - Project requires error tracking
  - Need compliance or audit trails
  - Performance monitoring is needed
  
  Always combine with:
  - database module (for log persistence)
  - auth module (for user action tracking)
  
  Configuration steps:
  1. Setup Winston configuration
  2. Configure log transports (console, file, database)
  3. Setup audit middleware
  4. Configure log levels and formats
  5. Integrate with error tracking (Sentry)
  6. Setup log rotation and retention

automation:
  scripts:
    - "setup-logging"
    - "rotate-logs"
    - "analyze-logs"
    - "export-audit"

testing:
  unit_tests:
    - "logger.service.test.ts"
    - "audit.middleware.test.ts"
    - "logging.interceptor.test.ts"
  integration_tests:
    - "logging-flow.test.ts"
    - "audit-trail.test.ts"
  e2e_tests:
    - "error-tracking.e2e.test.ts"
    - "performance-logging.e2e.test.ts"

performance:
  metrics:
    - "logs_per_second"
    - "log_processing_time"
    - "storage_usage"
    - "query_performance"
  optimization:
    - "async_logging"
    - "log_batching"
    - "compression"
    - "indexing"

retention:
  policies:
    - "error_logs: 90 days"
    - "audit_logs: 7 years"
    - "performance_logs: 30 days"
    - "debug_logs: 7 days"
  cleanup:
    - "automated_archival"
    - "compression"
    - "selective_deletion"

security:
  features:
    - "log_sanitization"
    - "pii_filtering"
    - "access_control"
    - "encryption_at_rest"
  compliance:
    - "gdpr_compliant"
    - "hipaa_ready"
    - "sox_compliant"

compatibility:
  node_versions:
    - ">=16.0.0"
  frameworks:
    - "nestjs"
    - "express"
    - "fastify"
  databases:
    - "postgresql"
    - "mysql"
    - "mongodb"
    - "elasticsearch"

documentation:
  - "README.md"
  - "API.md"
  - "CONFIGURATION.md"
  - "COMPLIANCE.md"
  - "TROUBLESHOOTING.md"