/** * Enhanced Logging System with Winston Integration * * Uses winston for industry-standard logging while maintaining * custom tracing and correlation features for qtests. */ import winston from 'winston'; import { EventEmitter } from 'events'; export declare enum LogLevel { TRACE = 0, DEBUG = 1, INFO = 2, WARN = 3, ERROR = 4, FATAL = 5 } export declare enum LogFormat { JSON = "json", TEXT = "text", STRUCTURED = "structured" } export interface LogEntry { timestamp: string; level: LogLevel; message: string; logger: string; traceId?: string; spanId?: string; correlationId?: string; userId?: string; sessionId?: string; requestId?: string; duration?: number; metadata?: Record; tags?: string[]; error?: { name: string; message: string; stack: string; }; service?: string; version?: string; environment?: string; host?: string; pid?: number; } export interface TracingSpan { traceId: string; spanId: string; parentSpanId?: string; operationName: string; startTime: number; endTime?: number; duration?: number; tags: Record; logs: LogEntry[]; status: 'ok' | 'error' | 'timeout'; error?: { type: string; message: string; }; service?: string; resource?: string; } export interface LoggerConfig { level?: LogLevel; format?: LogFormat; service: string; version?: string; environment?: string; enableConsole?: boolean; enableFile?: boolean; filePath?: string; maxFileSize?: number; maxFiles?: number; enableTracing?: boolean; samplingRate?: number; metadata?: Record; tags?: string[]; } /** * Enhanced logger with winston backend and custom tracing */ export declare class Logger extends EventEmitter { private winston; private config; private activeSpans; private correlationContext; constructor(config: LoggerConfig); trace(message: string, metadata?: Record): void; debug(message: string, metadata?: Record): void; info(message: string, metadata?: Record): void; warn(message: string, metadata?: Record): void; error(message: string, error?: Error, metadata?: Record): void; fatal(message: string, error?: Error, metadata?: Record): void; log(level: LogLevel, message: string, metadata?: Record): void; startSpan(operationName: string, parentSpanId?: string): TracingSpan; finishSpan(spanId: string, status?: 'ok' | 'error' | 'timeout', error?: Error): void; withSpan(operationName: string, fn: (span: TracingSpan) => T): T; withSpanAsync(operationName: string, fn: (span: TracingSpan) => Promise): Promise; addTag(spanId: string, key: string, value: string | number | boolean): void; addLog(spanId: string, level: LogLevel, message: string): void; setCorrelationId(key: string, value: string): void; getCorrelationId(key: string): string | undefined; clearCorrelationContext(): void; addTransport(transport: winston.transport): void; removeTransport(transport: winston.transport): void; getActiveSpans(): TracingSpan[]; flush(): Promise; close(): Promise; private setupWinston; private writeToWinston; private getWinstonLevel; private generateTraceId; private generateSpanId; private getHostInfo; private createMockSpan; } /** * Logger factory and manager */ export declare class LoggerFactory { private static loggers; private static defaultConfig?; static setDefaultConfig(config: Partial): void; static getLogger(name: string, config?: LoggerConfig): Logger; static shutdownAll(): Promise; } /** * Global logger instance */ export declare const logger: Logger; export { winston }; export default Logger; //# sourceMappingURL=logging.d.ts.map