# Smartlog Improvement Plan ## Overview This document outlines a plan for enhancing the `@push.rocks/smartlog` module to incorporate the advanced features currently implemented in the custom `EnhancedLogger` wrapper. By moving these features directly into `smartlog`, we can eliminate the need for wrapper classes while providing a more comprehensive logging solution. ## Current Limitations in Smartlog - Limited context management (no hierarchical contexts) - No correlation ID tracking for distributed tracing - No built-in filtering or log level management - No log sampling capabilities - No middleware for HTTP request/response logging - No timing utilities for performance tracking - No child logger functionality with context inheritance ## Proposed Enhancements ### 1. Context Management - Add hierarchical context support - Implement methods for manipulating context: - `setContext(context, overwrite = false)` - `addToContext(key, value)` - `removeFromContext(key)` ### 2. Correlation ID Tracking - Add correlation ID support for distributed tracing - Implement methods for correlation management: - `setCorrelationId(id = null)` - `getCorrelationId()` - `clearCorrelationId()` ### 3. Log Filtering - Implement configurable log filtering based on: - Minimum log level - Pattern-based exclusion rules - Custom filtering functions ### 4. Log Sampling - Add probabilistic log sampling for high-volume environments - Support for enforcing critical logs (e.g., errors) regardless of sampling ### 5. Child Loggers - Support creating child loggers with inherited context - Allow context overrides in child loggers ### 6. Timing Utilities - Add methods for timing operations: - `logTimed(level, message, fn, context)` - Support for both async and sync operations ### 7. HTTP Request Logging - Add middleware for Express/Fastify/other HTTP frameworks - Auto-capture request/response data - Auto-propagate correlation IDs ### 8. Log Standardization - Ensure consistent output format - Add standard fields like timestamp, correlation ID - Support for custom formatters ## Implementation Plan 1. **Core Enhancements** - Implement context management - Add correlation ID tracking - Develop filtering and sampling capabilities 2. **Extended Features** - Build child logger functionality - Create timing utility methods - Implement HTTP middleware 3. **Compatibility** - Ensure backward compatibility - Provide migration guide - Add TypeScript declarations 4. **Documentation** - Update README with new features - Add examples for each feature - Document best practices ## Migration Path After implementing these enhancements to `smartlog`, the migration would involve: 1. Update to latest `smartlog` version 2. Replace `EnhancedLogger` instances with `smartlog.Smartlog` 3. Update configuration to use new capabilities 4. Replace middleware with `smartlog`'s built-in solutions ## Benefits - Simplified dependency tree - Better maintainability with single logging solution - Improved performance with native implementation - Enhanced type safety through TypeScript - Standardized logging across projects