Phase 2.4: Logging Unification
2. **Performance Monitoring** - `timed_operation()` context manager - `@log_performance` decorator - `@log_context` decorator - `log_section()` helper
Full Public Reader
# Phase 2.4: Logging Unification
Week: 2 | Duration: 0.5 days | Status: ✅ Complete
## Objective
Create unified `dlm/utils/logger.py` from `dlm/response/logging_utils.py` and `ircp/utils/logging_utils.py`
## Tasks
- [x] Create `dlm/utils/` directory
- [x] Merge logging utilities into `dlm/utils/logger.py`
- [x] Enhance ResponseLogger for all DLM modules
- [x] Add module-specific loggers
- [x] Add performance logging decorators
- [x] Add structured logging for training
- [x] Add log levels configuration
- [x] Replace print() statements throughout codebase
- [x] Add tests
- [x] Document logging patterns
Implementation Summary
### Unified Logger Created
Created comprehensive `DLMLogger` class consolidating:
- From DLM: Structured logging with context management
- From IRCP: File rotation, colored output, experiment tracking
- Enhanced: Performance monitoring, decorators, global management
### Key Features
1. Structured Logging
- Context data support (`set_context()`, `context()` manager)
- Automatic formatting with key-value pairs
- Persistent and temporary context
2. Performance Monitoring
- `timed_operation()` context manager
- `@log_performance` decorator
- `@log_context` decorator
- `log_section()` helper
3. File Management
- Automatic file rotation
- Configurable file sizes (KB, MB, GB)
- Multiple backup files
- Directory creation
4. Console Output
- Optional colored output (colorlog)
- Configurable formats
- Level-based coloring
5. Integration
- Works with DLMConfig
- Global logger management
- Module-specific loggers
- Backward compatible
### Files Created/Modified
- Created: `packages/dlm/utils/logger.py` (468 lines)
- Created: `packages/dlm/utils/__init__.py`
- Created: `packages/dlm/tests/test_logger.py` (430+ lines, 30+ tests)
- Created: `packages/dlm/LOGGING_GUIDE.md` (600+ lines documentation)
- Deprecated: `packages/dlm/response/logging_utils.py`
- Deprecated: `packages/ircp/utils/logging_utils.py`
### Test Coverage
- LogLevel enum tests
- DLMLogger class tests
- Context management tests
- Performance decorator tests
- File logging and rotation tests
- Colored output tests
- Integration with DLMConfig tests
- Backward compatibility tests
API Overview
# Core classes
DLMLogger(name, verbose, log_level, log_file, ...)
LogLevel.DEBUG/INFO/WARNING/ERROR/CRITICAL
# Global functions
get_logger(name, **kwargs)
setup_logging(level, log_file, **kwargs)
# Decorators
@log_performance(logger, log_level)
@log_context(**context_data)
# Helpers
log_section(section_name, logger, **context)Example Usage
from dlm.utils import get_logger, log_performance
logger = get_logger("training")
logger.set_verbose(True)
@log_performance(logger=logger)
def train_epoch(epoch: int):
with logger.context(epoch=epoch):
logger.info("Starting training")
# ... training code ...
logger.info("Epoch complete", loss=0.234)## Accomplishments
✅ Unified logging system created
✅ Comprehensive test coverage (30+ tests)
✅ Full documentation with examples
✅ Backward compatibility maintained
✅ Integration with DLMConfig
✅ Performance monitoring tools
✅ File rotation support
✅ Colored console output
## Migration Notes
- Old logging utilities deprecated with warnings
- All functionality preserved
- Enhanced with new features
- See LOGGING_GUIDE.md for migration examples
Next: [Phase 2.5: Testing & Validation](PHASE_2_5_TESTING.md)
Promotion Decision
Attach run IDs, datasets, metrics, and reproduction commands.
Source Anchor
Comp-Core/backend/cc-trajectory/legacy/cc-tpo-original/cc-tpo/docs/progress/PHASE_2_4_LOGGING.md
Detected Structure
Method · Evaluation · Code Anchors