3.1 KiB
3.1 KiB
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
-
Core Enhancements
- Implement context management
- Add correlation ID tracking
- Develop filtering and sampling capabilities
-
Extended Features
- Build child logger functionality
- Create timing utility methods
- Implement HTTP middleware
-
Compatibility
- Ensure backward compatibility
- Provide migration guide
- Add TypeScript declarations
-
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:
- Update to latest
smartlog
version - Replace
EnhancedLogger
instances withsmartlog.Smartlog
- Update configuration to use new capabilities
- 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