Summary
Resolve the bidirectional dependency risk between thread_system and logger_system by deprecating direct logger_system integration in favor of common_system ILogger interface.
5W1H Specification
- Who: thread_system maintainers
- What: Remove direct logger_system dependency, use common_system ILogger exclusively
- Where:
adapters/logger_system_adapter.h, di/service_registration.h
- When: v0.4.0.0 release cycle
- Why:
- thread_system can optionally use logger_system (
BUILD_WITH_LOGGER_SYSTEM)
- logger_system can optionally use thread_system (
LOGGER_HAS_THREAD_SYSTEM)
- Both directions enabled creates circular dependency risk
- common_system already provides ILogger interface for logging abstraction
- How:
- Deprecate
BUILD_WITH_LOGGER_SYSTEM flag
- Use common_system ILogger for all logging
- logger_system can provide ILogger implementation via DI
Priority
HIGH - Risk level: MODERATE per CROSS_MODULE_INTEGRATION.md
Current Dependency State
┌──────────────────────┐
│ thread_system │
│ │
│ logger_system_ │◄──── Direct dependency (TO REMOVE)
│ adapter.h │
└──────────┬───────────┘
│
BUILD_WITH_ │
LOGGER_SYSTEM │
│
┌──────────▼───────────┐
│ logger_system │
│ │
│ thread_system_ │◄──── Uses for async file I/O
│ integration.h │
└──────────────────────┘
Current Integration Files
| File |
Guard |
Purpose |
Action |
adapters/logger_system_adapter.h |
BUILD_WITH_LOGGER_SYSTEM |
Wrap logger_system |
DEPRECATE |
adapters/common_logger_adapter.h |
(none) |
Wrap common ILogger |
KEEP |
di/service_registration.h |
Multiple |
DI registration |
Update |
Proposed Resolution
Migration: logger_system_adapter → common_logger_adapter
// DEPRECATED: Direct logger_system dependency
#if defined(BUILD_WITH_COMMON_SYSTEM) && defined(BUILD_WITH_LOGGER_SYSTEM)
class logger_system_adapter : public ILogger {
// Direct dependency on logger_system types
};
#endif
// PREFERRED: Common interface (already exists)
class common_logger_adapter : public thread::ILogger {
public:
explicit common_logger_adapter(
std::shared_ptr<common::interfaces::ILogger> logger)
: logger_(std::move(logger)) {}
// Delegates to common_system ILogger
void log(log_level level, std::string_view message) override {
logger_->log(to_common_level(level), message);
}
private:
std::shared_ptr<common::interfaces::ILogger> logger_;
};
// logger_system can register its implementation
// ServiceContainer::register<common::interfaces::ILogger>(
// []() { return std::make_shared<logger_system::logger>(); });
CMake Migration
# DEPRECATED - Remove in v0.5.0.0
option(BUILD_WITH_LOGGER_SYSTEM "Direct logger_system integration" OFF)
if(BUILD_WITH_LOGGER_SYSTEM)
message(DEPRECATION
"BUILD_WITH_LOGGER_SYSTEM is deprecated. Use common_system ILogger instead. "
"logger_system can provide ILogger implementation via ServiceContainer.")
endif()
# PREFERRED - Already supported
if(BUILD_WITH_COMMON_SYSTEM)
# Uses common::interfaces::ILogger, no direct logger_system dependency
endif()
Tasks
Deprecation Timeline
| Version |
Action |
| v0.4.0.0 |
Add deprecation warnings, document migration |
| v0.4.x |
Monitor usage, assist migrations |
| v0.5.0.0 |
Remove BUILD_WITH_LOGGER_SYSTEM flag |
Migration Guide for Downstream Users
// Before: Direct logger_system dependency
#ifdef BUILD_WITH_LOGGER_SYSTEM
auto logger = std::make_shared<thread::logger_system_adapter>(
logger_system::get_default_logger());
thread_pool pool(config, logger);
#endif
// After: Common interface (works with any ILogger implementation)
auto common_logger = container.resolve<common::interfaces::ILogger>();
auto adapter = std::make_shared<thread::common_logger_adapter>(common_logger);
thread_pool pool(config, adapter);
Acceptance Criteria
Dependencies
Parent Epic
Related Issues
Summary
Resolve the bidirectional dependency risk between thread_system and logger_system by deprecating direct logger_system integration in favor of common_system ILogger interface.
5W1H Specification
adapters/logger_system_adapter.h,di/service_registration.hBUILD_WITH_LOGGER_SYSTEM)LOGGER_HAS_THREAD_SYSTEM)BUILD_WITH_LOGGER_SYSTEMflagPriority
HIGH - Risk level: MODERATE per CROSS_MODULE_INTEGRATION.md
Current Dependency State
Current Integration Files
adapters/logger_system_adapter.hBUILD_WITH_LOGGER_SYSTEMadapters/common_logger_adapter.hdi/service_registration.hProposed Resolution
Migration: logger_system_adapter → common_logger_adapter
CMake Migration
Tasks
BUILD_WITH_LOGGER_SYSTEMas deprecated in CMakelogger_system_adapter.hcommon_logger_adaptercovers all use casesDeprecation Timeline
Migration Guide for Downstream Users
Acceptance Criteria
logger_system_adapter.hhas [[deprecated]] attributeDependencies
Parent Epic
Related Issues