107 lines
3.1 KiB
Markdown
107 lines
3.1 KiB
Markdown
# 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 |