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
|