/** * Structured Logging Helpers * * Provides structured logging utilities for agent execution with: * - JSON-formatted log output * - Correlation IDs (trace, span, session) * - Log levels * - Child loggers with inherited context */ import type { LogEntry, StructuredLogger, StructuredLoggerOptions } from './types.js'; /** * Create a structured logger * * @param options - Logger options * @returns StructuredLogger instance * * @example * ```typescript * const logger = createStructuredLogger({ * level: 'info', * serviceName: 'my-agent', * prettyPrint: process.env.NODE_ENV !== 'production', * }); * * logger.info('Agent started', { version: '1.0.0' }); * logger.error('Tool failed', new Error('timeout'), { toolName: 'bash' }); * * // Create child logger with context * const sessionLogger = logger.child({ sessionId: 'abc123' }); * sessionLogger.info('Processing request'); // includes sessionId * ``` */ export declare function createStructuredLogger(options?: StructuredLoggerOptions): StructuredLogger; /** * Create a no-op logger (useful for testing or disabling logs) */ export declare function createNoopLogger(): StructuredLogger; /** * Create a logger that buffers entries (useful for testing) */ export declare function createBufferedLogger(): StructuredLogger & { entries: LogEntry[]; clear: () => void; }; /** * Format duration in human-readable format */ export declare function formatDuration(ms: number): string; /** * Format bytes in human-readable format */ export declare function formatBytes(bytes: number): string; /** * Redact sensitive data from an object */ export declare function redactSensitive(data: Record, sensitiveKeys?: string[]): Record; /** * Create a logger that integrates with TracingManager * * @param tracingManager - TracingManager instance * @param options - Logger options * @returns StructuredLogger that auto-correlates with traces * * @example * ```typescript * const tracingManager = new TracingManager({ serviceName: 'my-agent' }); * const logger = createTracingLogger(tracingManager); * * // Logger automatically includes current trace/span IDs * logger.info('Processing request'); * ``` */ export declare function createTracingLogger(tracingManager: { getCurrentSpan: () => { spanId: string; traceId: string; } | undefined; }, options?: StructuredLoggerOptions): StructuredLogger;