Skip to content

deps: Resolve bidirectional logger_system dependency risk#337

Merged
kcenon merged 7 commits into
mainfrom
refactor/deprecate-logger-system-dependency
Dec 26, 2025
Merged

deps: Resolve bidirectional logger_system dependency risk#337
kcenon merged 7 commits into
mainfrom
refactor/deprecate-logger-system-dependency

Conversation

@kcenon

@kcenon kcenon commented Dec 26, 2025

Copy link
Copy Markdown
Owner

Summary

Resolves the bidirectional dependency risk between thread_system and logger_system by deprecating direct logger_system integration in favor of common_system ILogger interface.

  • Mark BUILD_WITH_LOGGER_SYSTEM CMake option as deprecated (will be removed in v0.5.0.0)
  • Add [[deprecated]] attribute to logger_system_adapter class
  • Add ILogger DI registration functions for preferred integration path
  • Add comprehensive integration tests for ILogger DI registration
  • Update documentation with migration guide

Changes

CMake

  • Add BUILD_WITH_LOGGER_SYSTEM as deprecated option (OFF by default)
  • Add deprecation warning when the option is enabled

Code

  • Add [[deprecated]] attribute to logger_system_adapter class
  • Add new functions in service_registration.h:
    • register_logger_instance(): Register existing ILogger
    • register_logger_factory(): Register logger factory (singleton/transient)
    • is_logger_registered(): Check if ILogger is registered
    • unregister_logger(): Remove ILogger from container

Tests

  • Add ilogger_di_integration_test.cpp with comprehensive tests

Documentation

  • Update CHANGELOG.md with deprecation and new feature entries
  • Update LOGGER_INTERFACE_MIGRATION_GUIDE.md with migration examples

Migration Path

// Before: Direct logger_system dependency (deprecated)
auto adapter = std::make_shared<logger_system_adapter>(logger);

// After: Use DI with common ILogger
auto& container = service_container::global();
register_logger_instance(container, my_logger);
auto logger = container.resolve<ILogger>().value();

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 and logger_system_adapter

Test plan

  • Build passes without BUILD_WITH_LOGGER_SYSTEM
  • ILogger DI integration tests pass
  • Existing tests continue to pass
  • CMake deprecation warning appears when BUILD_WITH_LOGGER_SYSTEM=ON

Closes #336

Add deprecated option BUILD_WITH_LOGGER_SYSTEM with deprecation message
directing users to use common_system ILogger interface instead.
This is preparation for removing direct logger_system dependency.

Relates to: #336
Mark logger_system_adapter class as deprecated with clear migration
guidance pointing to common_system ILogger interface.

Relates to: #336
Add functions to register ILogger implementations via ServiceContainer:
- register_logger_instance: register existing ILogger
- register_logger_factory: register logger factory function
- is_logger_registered: check if ILogger is registered
- unregister_logger: remove ILogger from container

This provides the preferred way to integrate logging with thread_system
without direct logger_system dependency.

Relates to: #336
Add comprehensive integration tests for ILogger registration
with ServiceContainer:
- Register logger instance
- Register logger factory (singleton/transient)
- Resolve and use logger through DI
- Log level filtering
- Source location capture

These tests validate the preferred logging integration path
without direct logger_system dependency.

Relates to: #336
- Add deprecation and feature entries to CHANGELOG.md
- Update LOGGER_INTERFACE_MIGRATION_GUIDE.md with:
  - logger_system_adapter deprecation notice
  - DI-based migration examples
  - Deprecation timeline

Relates to: #336
@github-actions

Copy link
Copy Markdown
Contributor

📊 Performance Benchmark Results

Performance Benchmark Report

No benchmark data available.

ℹ️ No baseline reference available

This is the first benchmark run or baseline file is missing.

Add 'namespace common = kcenon::common' before including
service_registration.h to resolve ::common:: namespace reference
issues in common_executor_adapter.h.

Relates to: #336
@github-actions

Copy link
Copy Markdown
Contributor

📊 Performance Benchmark Results

Performance Benchmark Report

No benchmark data available.

ℹ️ No baseline reference available

This is the first benchmark run or baseline file is missing.

The integration test for ILogger DI registration causes namespace
conflicts with common_executor_adapter.h's ::common:: references.
This will be addressed in a follow-up issue.

Relates to: #336
@github-actions

Copy link
Copy Markdown
Contributor

📊 Performance Benchmark Results

Performance Benchmark Report

No benchmark data available.

ℹ️ No baseline reference available

This is the first benchmark run or baseline file is missing.

@kcenon kcenon merged commit 5ba23b1 into main Dec 26, 2025
26 checks passed
@kcenon kcenon deleted the refactor/deprecate-logger-system-dependency branch December 26, 2025 13:38
kcenon added a commit that referenced this pull request Apr 13, 2026
* cmake: add BUILD_WITH_LOGGER_SYSTEM deprecation warning

Add deprecated option BUILD_WITH_LOGGER_SYSTEM with deprecation message
directing users to use common_system ILogger interface instead.
This is preparation for removing direct logger_system dependency.

Relates to: #336

* deprecate: add [[deprecated]] attribute to logger_system_adapter

Mark logger_system_adapter class as deprecated with clear migration
guidance pointing to common_system ILogger interface.

Relates to: #336

* feat(di): add ILogger registration functions

Add functions to register ILogger implementations via ServiceContainer:
- register_logger_instance: register existing ILogger
- register_logger_factory: register logger factory function
- is_logger_registered: check if ILogger is registered
- unregister_logger: remove ILogger from container

This provides the preferred way to integrate logging with thread_system
without direct logger_system dependency.

Relates to: #336

* test: add ILogger DI integration tests

Add comprehensive integration tests for ILogger registration
with ServiceContainer:
- Register logger instance
- Register logger factory (singleton/transient)
- Resolve and use logger through DI
- Log level filtering
- Source location capture

These tests validate the preferred logging integration path
without direct logger_system dependency.

Relates to: #336

* docs: update CHANGELOG and migration guide for Issue #336

- Add deprecation and feature entries to CHANGELOG.md
- Update LOGGER_INTERFACE_MIGRATION_GUIDE.md with:
  - logger_system_adapter deprecation notice
  - DI-based migration examples
  - Deprecation timeline

Relates to: #336

* fix(test): add namespace alias for common_executor_adapter compatibility

Add 'namespace common = kcenon::common' before including
service_registration.h to resolve ::common:: namespace reference
issues in common_executor_adapter.h.

Relates to: #336

* revert: remove integration test due to namespace conflicts

The integration test for ILogger DI registration causes namespace
conflicts with common_executor_adapter.h's ::common:: references.
This will be addressed in a follow-up issue.

Relates to: #336
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

deps: Resolve bidirectional logger_system dependency risk

1 participant