282 lines
7.8 KiB
Markdown
282 lines
7.8 KiB
Markdown
# CLI Logging Integration Summary
|
|
|
|
## Overview
|
|
|
|
The TradingAgents CLI has been successfully integrated with the comprehensive logging system. This enhancement provides structured logging, performance tracking, and better debugging capabilities throughout the analysis workflow.
|
|
|
|
## Changes Made
|
|
|
|
### 1. Updated `cli/main.py`
|
|
|
|
#### Added Imports
|
|
```python
|
|
from tradingagents.utils.logging_config import (
|
|
get_logger,
|
|
get_api_logger,
|
|
get_performance_logger,
|
|
configure_logging,
|
|
)
|
|
```
|
|
|
|
#### Initialized Loggers
|
|
```python
|
|
# Initialize comprehensive logging system
|
|
configure_logging(level="INFO", console=True)
|
|
cli_logger = get_logger("tradingagents.cli", component="CLI")
|
|
api_logger = get_api_logger()
|
|
perf_logger = get_performance_logger()
|
|
```
|
|
|
|
#### Enhanced MessageBuffer Class
|
|
- Added logger instance: `self.logger = get_logger("tradingagents.cli.buffer", component="BUFFER")`
|
|
- Added logging to `add_message()` method for message tracking
|
|
- Added logging to `add_tool_call()` method for tool call tracking
|
|
- Added logging to `update_agent_status()` method for agent status transitions
|
|
- Added logging to `update_report_section()` method for report updates
|
|
|
|
#### Enhanced `run_analysis()` Function
|
|
- Added session start/end logging
|
|
- Log user selections with full context
|
|
- Log graph initialization
|
|
- Log results directory creation
|
|
- Enhanced decorators to include comprehensive logging:
|
|
- `save_message_decorator`: Logs agent messages with context
|
|
- `save_tool_call_decorator`: Logs tool calls with arguments
|
|
- `save_report_section_decorator`: Logs report generation with metadata
|
|
- Added performance tracking for:
|
|
- Graph analysis duration
|
|
- Total session duration
|
|
- Log analysis completion with statistics
|
|
- Added performance summary logging
|
|
|
|
#### Enhanced `analyze()` Command
|
|
- Added try-catch for better error handling
|
|
- Log session start with separator line
|
|
- Handle KeyboardInterrupt gracefully
|
|
- Log errors with full context and stack traces
|
|
|
|
### 2. Created Documentation
|
|
|
|
#### `docs/CLI_LOGGING_INTEGRATION.md`
|
|
Comprehensive documentation covering:
|
|
- Overview of logging features
|
|
- Log file descriptions and locations
|
|
- Logging components (CLI, Buffer, API, Performance)
|
|
- Usage examples with sample output
|
|
- Configuration options
|
|
- Benefits and best practices
|
|
- Troubleshooting guide
|
|
- Migration notes
|
|
- Future enhancements
|
|
|
|
### 3. Created Test Script
|
|
|
|
#### `test_cli_logging.py`
|
|
Test script that validates:
|
|
- Basic logging functionality
|
|
- Contextual logging with structured data
|
|
- Buffer-style logging for agent messages
|
|
- API call logging with metrics
|
|
- Performance tracking and timing
|
|
- Error logging with stack traces
|
|
- Report section logging
|
|
- Complete session logging workflow
|
|
- Log file creation verification
|
|
|
|
## Features Added
|
|
|
|
### 1. Structured Logging
|
|
- All log entries include timestamps and component labels
|
|
- Context information provides detailed insights
|
|
- JSON-formatted context for easy parsing
|
|
|
|
### 2. Multiple Log Files
|
|
```
|
|
logs/
|
|
├── tradingagents.log # All logs (DEBUG+)
|
|
├── api_calls.log # API call tracking
|
|
├── memory.log # Memory operations
|
|
├── agents.log # Agent activities
|
|
├── errors.log # Errors only
|
|
└── performance.log # Performance metrics
|
|
```
|
|
|
|
### 3. Performance Tracking
|
|
- Operation timing measurement
|
|
- Statistical analysis (min, max, avg)
|
|
- Performance summaries
|
|
- Bottleneck identification
|
|
|
|
### 4. API Monitoring
|
|
- Track all API calls
|
|
- Monitor token usage
|
|
- Calculate costs
|
|
- Track success/failure rates
|
|
|
|
### 5. Enhanced Debugging
|
|
- Full stack traces for errors
|
|
- Agent state transitions
|
|
- Tool call history
|
|
- Report generation tracking
|
|
|
|
## Log Examples
|
|
|
|
### User Selection Logging
|
|
```
|
|
2025-01-15 10:30:05 | INFO | CLI | User selections received
|
|
Context: {
|
|
"ticker": "AAPL",
|
|
"date": "2024-01-15",
|
|
"analysts": ["market", "social", "news"],
|
|
"research_depth": 3,
|
|
"llm_provider": "openai"
|
|
}
|
|
```
|
|
|
|
### Agent Status Update
|
|
```
|
|
2025-01-15 10:30:10 | INFO | BUFFER | Agent status updated: Market Analyst -> in_progress
|
|
Context: {
|
|
"agent": "Market Analyst",
|
|
"old_status": "pending",
|
|
"new_status": "in_progress"
|
|
}
|
|
```
|
|
|
|
### Tool Call Tracking
|
|
```
|
|
2025-01-15 10:30:15 | INFO | BUFFER | Tool call registered: get_stock_data
|
|
Context: {
|
|
"tool": "get_stock_data",
|
|
"args": {"ticker": "AAPL", "period": "1mo"},
|
|
"timestamp": "10:30:15"
|
|
}
|
|
```
|
|
|
|
### Performance Metrics
|
|
```
|
|
2025-01-15 10:45:30 | INFO | CLI | Analysis completed successfully
|
|
Context: {
|
|
"ticker": "AAPL",
|
|
"date": "2024-01-15",
|
|
"duration_ms": 903421.5,
|
|
"chunks_processed": 47
|
|
}
|
|
```
|
|
|
|
## Benefits
|
|
|
|
### 1. **Better Debugging**
|
|
- Structured logs make issue tracking easier
|
|
- Full context available for each operation
|
|
- Stack traces for all exceptions
|
|
|
|
### 2. **Performance Monitoring**
|
|
- Identify slow operations
|
|
- Track improvements over time
|
|
- Statistical analysis of performance
|
|
|
|
### 3. **Audit Trail**
|
|
- Complete record of all operations
|
|
- Track user actions and system responses
|
|
- Compliance-ready logging
|
|
|
|
### 4. **Cost Tracking**
|
|
- Monitor API usage
|
|
- Calculate costs per session
|
|
- Optimize expensive operations
|
|
|
|
### 5. **Production Ready**
|
|
- Automatic log rotation
|
|
- Multiple log levels
|
|
- Error isolation in separate files
|
|
|
|
## Testing
|
|
|
|
Run the test script to verify logging integration:
|
|
|
|
```bash
|
|
python3 test_cli_logging.py
|
|
```
|
|
|
|
Expected output:
|
|
- All tests pass ✓
|
|
- Log files created in `logs/` directory
|
|
- Structured output in console
|
|
- Context information properly formatted
|
|
|
|
## Backward Compatibility
|
|
|
|
The changes maintain backward compatibility:
|
|
- Legacy `message_tool.log` files still created per session
|
|
- Existing functionality unchanged
|
|
- New logging is additive, not replacing existing behavior
|
|
|
|
## Configuration
|
|
|
|
### Change Log Level
|
|
```python
|
|
configure_logging(level="DEBUG", console=True)
|
|
```
|
|
|
|
### Disable Console Output
|
|
```python
|
|
configure_logging(level="INFO", console=False)
|
|
```
|
|
|
|
### Custom Log Directory
|
|
```python
|
|
configure_logging(level="INFO", log_dir="custom/path")
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
### Recommended Actions
|
|
1. Review generated log files in `logs/` directory
|
|
2. Run a full analysis session to see logs in action
|
|
3. Monitor `errors.log` for any issues
|
|
4. Review `performance.log` for optimization opportunities
|
|
|
|
### Future Enhancements
|
|
- [ ] Add log aggregation support (ELK stack)
|
|
- [ ] Implement real-time log streaming dashboard
|
|
- [ ] Add metrics export for monitoring tools (Prometheus)
|
|
- [ ] Implement distributed tracing for multi-agent workflows
|
|
- [ ] Add log filtering and search UI
|
|
- [ ] Compress archived logs automatically
|
|
|
|
## Verification
|
|
|
|
✅ Logging system initialized and configured
|
|
✅ MessageBuffer integrated with logging
|
|
✅ CLI commands wrapped with logging
|
|
✅ Performance tracking implemented
|
|
✅ API call logging integrated
|
|
✅ Error handling with full stack traces
|
|
✅ Documentation created
|
|
✅ Test script created and passing
|
|
✅ Log files generated correctly
|
|
✅ Backward compatibility maintained
|
|
|
|
## Impact
|
|
|
|
### Code Quality
|
|
- ⬆️ Improved debugging capabilities
|
|
- ⬆️ Better error tracking
|
|
- ⬆️ Enhanced observability
|
|
|
|
### Operations
|
|
- ⬆️ Production readiness
|
|
- ⬆️ Monitoring capabilities
|
|
- ⬆️ Cost tracking
|
|
|
|
### Developer Experience
|
|
- ⬆️ Easier troubleshooting
|
|
- ⬆️ Better insights into system behavior
|
|
- ⬆️ Structured logging for analysis
|
|
|
|
## Summary
|
|
|
|
The CLI now uses a comprehensive logging system that provides structured, contextual logging throughout the trading analysis workflow. This makes the system more maintainable, debuggable, and production-ready while maintaining full backward compatibility with existing functionality.
|
|
|
|
All logging is centralized through the `tradingagents.utils.logging_config` module, ensuring consistency across the application. The system automatically handles log rotation, separates errors into dedicated files, and tracks performance metrics for optimization. |