/** * Log levels in order of severity */ export declare enum LogLevel { DEBUG = "debug", INFO = "info", WARN = "warn", ERROR = "error" } /** * Structured log entry */ export interface LogEntry { level: LogLevel; message: string; timestamp: Date; context?: Record; correlationId?: string; error?: Error; } /** * Log transport interface for custom log handlers */ export interface LogTransport { log(entry: LogEntry): void | Promise; } /** * Console transport with colored output */ export declare class ConsoleTransport implements LogTransport { private readonly colors; log(entry: LogEntry): void; } /** * JSON transport for structured logging */ export declare class JsonTransport implements LogTransport { log(entry: LogEntry): void; } /** * Logger configuration */ export interface LoggerConfig { /** Minimum log level to output */ level: LogLevel; /** Log transports */ transports: LogTransport[]; /** Default context to include in all logs */ defaultContext?: Record; /** Whether to include timestamp */ includeTimestamp?: boolean; } /** * Structured logger with context and correlation support * * @example * ```typescript * const logger = new Logger({ * level: LogLevel.INFO, * transports: [new ConsoleTransport()], * defaultContext: { service: 'elasticsearch-client' } * }); * * logger.info('Connected to Elasticsearch', { node: 'localhost:9200' }); * * const childLogger = logger.withContext({ operation: 'bulk-index' }); * childLogger.debug('Processing batch', { size: 1000 }); * ``` */ export declare class Logger { private config; private context; private correlationId?; constructor(config?: Partial); /** * Create a child logger with additional context */ withContext(context: Record): Logger; /** * Create a child logger with correlation ID */ withCorrelation(correlationId: string): Logger; /** * Create a child logger for a specific namespace */ child(namespace: string): Logger; /** * Log at DEBUG level */ debug(message: string, meta?: Record): void; /** * Log at INFO level */ info(message: string, meta?: Record): void; /** * Log at WARN level */ warn(message: string, meta?: Record): void; /** * Log at ERROR level * * Accepts either: * - error(message, Error, meta) - explicit error with optional metadata * - error(message, meta) - error context as metadata (error property extracted) */ error(message: string, errorOrMeta?: Error | Record, meta?: Record): void; /** * Internal log method */ private log; /** * Check if a log level should be output */ private shouldLog; /** * Update logger configuration */ setLevel(level: LogLevel): void; /** * Add a transport */ addTransport(transport: LogTransport): void; /** * Get current log level */ getLevel(): LogLevel; } /** * Default logger instance */ export declare const defaultLogger: Logger;