UNPKG

@voilajsx/appkit

Version:

Minimal and framework agnostic Node.js toolkit designed for AI agentic backend development

102 lines 4.5 kB
/** * Console transport with smart formatting, minimal mode support, and visual error enhancement * @module @voilajsx/appkit/loggier * @file src/logger/transports/console.ts * * @llm-rule WHEN: Need console output for development or production monitoring * @llm-rule AVOID: Using console.log directly - this handles levels, colors, and formatting * @llm-rule NOTE: Auto-detects production/development mode and adjusts formatting accordingly * @llm-rule NOTE: Enhanced to work with visual error formatting from loggerClass.error() method */ import type { LogEntry, Transport } from '../logger.js'; import type { LoggingConfig } from '../defaults.js'; /** * Console transport with automatic formatting and smart minimal mode */ export declare class ConsoleTransport implements Transport { private colorize; private timestamps; private prettyPrint; private minimal; /** * Creates console transport with direct environment access (like auth pattern) * @llm-rule WHEN: Logger initialization - gets config from environment defaults * @llm-rule AVOID: Manual configuration - environment detection handles this */ constructor(config: LoggingConfig); /** * Write log entry to console with smart formatting * @llm-rule WHEN: Outputting logs to console for development or production * @llm-rule AVOID: Calling directly - logger routes entries automatically * @llm-rule NOTE: Skips visual error entries since they're handled by loggerClass.error() method directly */ write(entry: LogEntry): void; /** * Check if entry should be skipped because it was already visually displayed * @llm-rule WHEN: Enhanced error() method has already shown visual formatting * @llm-rule AVOID: Double-displaying errors that have visual formatting */ private shouldSkipVisualEntry; /** * Format for minimal mode - clean and simple, all logs visible * @llm-rule WHEN: Development mode with minimal scope for clean console * @llm-rule AVOID: Adding JSON metadata - defeats purpose of minimal mode * @llm-rule NOTE: Shows all logs but with clean formatting, no filtering */ private formatMinimal; /** * Format for pretty development mode - full detail with JSON structure * @llm-rule WHEN: Development mode with full scope for detailed debugging * @llm-rule AVOID: In production - too verbose for production logs */ private formatPretty; /** * Format for standard/production mode - structured but compact * @llm-rule WHEN: Production or when structured logs needed for parsing * @llm-rule AVOID: For development debugging - pretty mode is better */ private formatStandard; /** * Get level label with emoji for visual identification * @llm-rule WHEN: Pretty or minimal formatting needs visual level indicators * @llm-rule AVOID: In production structured logs - use level text instead */ private getLevelLabel; /** * Apply ANSI color codes for terminal output * @llm-rule WHEN: Development mode or when terminal supports colors * @llm-rule AVOID: In CI/CD or when colors not supported */ private applyColor; /** * Output to appropriate console method based on level * @llm-rule WHEN: Final console output step * @llm-rule AVOID: Always using console.log - different levels use different methods */ private outputToConsole; /** * Get numeric value for log level comparison * @llm-rule WHEN: Comparing log levels for filtering * @llm-rule AVOID: String comparison - numeric is more reliable */ private getLevelValue; /** * Check if this transport should log the given level * @llm-rule WHEN: Logger asks if transport handles this level * @llm-rule AVOID: Complex level logic - simple comparison is sufficient */ shouldLog(level: string, configLevel: string): boolean; /** * Flush pending logs (no-op for console - immediate output) * @llm-rule WHEN: Logger cleanup or app shutdown * @llm-rule AVOID: Expecting async behavior - console writes immediately */ flush(): Promise<void>; /** * Close transport (no-op for console - no resources to cleanup) * @llm-rule WHEN: Logger shutdown or transport cleanup * @llm-rule AVOID: Expecting cleanup behavior - console has no resources */ close(): Promise<void>; } //# sourceMappingURL=console.d.ts.map