/** * Sistema de logging estructurado con contexto completo del error * Extiende el logger existente con capacidades avanzadas de logging */ import { DetailedError } from '../errors'; export interface LogContext { operation?: string; userId?: string; sessionId?: string; requestId?: string; timestamp?: Date; duration?: number; metadata?: Record; stackTrace?: string; environment?: string; version?: string; } export interface StructuredLogEntry { level: 'debug' | 'info' | 'warn' | 'error' | 'critical'; message: string; timestamp: Date; context: LogContext; error?: { code: string; category: string; severity: string; suggestions: string[]; userMessage?: string; technicalDetails?: string; }; performance?: { duration: number; memoryUsage?: number; cpuUsage?: number; }; tags?: string[]; } export declare class StructuredLogger { private baseLogger; private globalContext; private logBuffer; private readonly MAX_BUFFER_SIZE; constructor(component: string, globalContext?: LogContext); /** * Establece contexto global para todos los logs */ setGlobalContext(context: Partial): void; /** * Log de debug con contexto estructurado */ debug(message: string, context?: LogContext): void; /** * Log de información con contexto estructurado */ info(message: string, context?: LogContext): void; /** * Log de advertencia con contexto estructurado */ warn(message: string, context?: LogContext): void; /** * Log de error con contexto completo */ error(message: string, error?: DetailedError | Error, context?: LogContext): void; /** * Log crítico para errores que requieren atención inmediata */ critical(message: string, error?: DetailedError | Error, context?: LogContext): void; /** * Log de operación con medición de rendimiento */ operation(operationName: string, startTime: Date, context?: LogContext): void; /** * Log de transacción con contexto de negocio */ transaction(transactionType: string, amount: number, currency: string, success: boolean, context?: LogContext): void; /** * Crea una entrada de log estructurada */ private createLogEntry; /** * Registra la entrada en el buffer y maneja la rotación */ private logEntry; /** * Formatea el mensaje para el logger base */ private formatMessage; /** * Obtiene el uso de memoria actual */ private getMemoryUsage; /** * Obtiene logs filtrados por criterios */ getLogs(filter?: { level?: string; operation?: string; timeRange?: { start: Date; end: Date; }; tags?: string[]; limit?: number; }): StructuredLogEntry[]; /** * Obtiene estadísticas de logs */ getLogStatistics(): { totalLogs: number; logsByLevel: Record; logsByOperation: Record; errorRate: number; averageOperationTime: number; }; /** * Exporta logs en formato JSON */ exportLogs(filter?: Parameters[0]): string; /** * Limpia el buffer de logs */ clearLogs(): void; } /** * Factory para crear loggers estructurados con configuración predeterminada */ export declare class StructuredLoggerFactory { private static loggers; /** * Obtiene o crea un logger estructurado para un componente */ static getLogger(component: string, globalContext?: LogContext): StructuredLogger; /** * Configura contexto global para todos los loggers */ static setGlobalContext(context: LogContext): void; /** * Obtiene estadísticas agregadas de todos los loggers */ static getAggregatedStatistics(): Record; } //# sourceMappingURL=structured-logger.d.ts.map