# SmartLog - Development Hints & Notes This document contains notes and findings about the SmartLog library to help with development and understanding of the codebase. ## Key Components - **Smartlog**: Main logger class that handles logging operations - **LogRouter**: Routes logs to various destinations - **LogGroup**: Groups related logs for better traceability - **ConsoleLog**: Destination that logs to the console - **ILogDestination**: Interface for implementing custom log destinations ## Core Concepts - **Log Context**: Metadata about the environment (company, environment, runtime, etc.) - **Log Levels**: 'silly', 'info', 'debug', 'note', 'ok', 'success', 'warn', 'error', 'lifecycle' - **Log Types**: 'log', 'increment', 'gauge', 'error', 'success', 'value', 'finance', 'compliance' - **Log Correlation**: Used to link related logs together (group, transaction, instance) ## Interactive Console Features - **SmartlogSourceInteractive**: Creates interactive spinners for CLI applications - **SmartlogProgressBar**: Creates progress bars for CLI applications - Both automatically detect non-interactive environments and provide fallback behavior ## Environment Detection The library uses feature detection to adapt to different environments: - Checks for TTY capability - Detects CI/CD environments (GitHub Actions, Jenkins, GitLab CI, Travis, CircleCI) - Provides appropriate output based on the environment ## Available Destinations - Console (built-in) - File (ts_destination_file) - Local (ts_destination_local) - Clickhouse (ts_destination_clickhouse) - Developer Tools (ts_destination_devtools) - Receiver (ts_destination_receiver) ## Advanced Features - **Increment Logging**: For metrics and counters - **Console Capture**: Option to capture all console output through Smartlog - **Custom Destinations**: Extend with custom log destinations ## Tests Test files are organized by environment compatibility: - *.both.ts: Tests for both browser and Node.js - *.node.ts: Tests for Node.js only - *.browser.ts: Tests for browser only