Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
logger_context.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6
7#include <memory>
12
49namespace kcenon::logger {
50
51// Forward declarations
52namespace security {
54}
55
56namespace core {
57
77public:
86
101 explicit logger_context(
102 std::shared_ptr<security::signal_manager_interface> signal_mgr
103 );
104
109
110 // Delete copy and move to prevent accidental sharing
115
116 // ============================================================
117 // Component Access (SRP-compliant design)
118 // ============================================================
119
128 return signal_context_;
129 }
130
135 auto signal_context() const -> const signal_manager_context& {
136 return signal_context_;
137 }
138
147 return registry_;
148 }
149
154 auto registry() const -> const logger_registry& {
155 return registry_;
156 }
157
158 // ============================================================
159 // Convenience Methods (Backward Compatibility)
160 // ============================================================
161
169 std::shared_ptr<security::signal_manager_interface> get_signal_manager() const {
170 return signal_context_.get_signal_manager();
171 }
172
180 void set_signal_manager(std::shared_ptr<security::signal_manager_interface> signal_mgr) {
181 signal_context_.set_signal_manager(std::move(signal_mgr));
182 }
183
191 bool is_initialized() const {
192 return signal_context_.is_initialized();
193 }
194
208 // Register in local registry
209 registry_.register_logger(log);
210
211 // Register with signal manager
212 auto signal_mgr = signal_context_.get_signal_manager();
213 if (signal_mgr) {
214 signal_mgr->register_logger(log);
215 }
216 }
217
231 // Unregister from local registry
232 registry_.unregister_logger(log);
233
234 // Unregister from signal manager
235 auto signal_mgr = signal_context_.get_signal_manager();
236 if (signal_mgr) {
237 signal_mgr->unregister_logger(log);
238 }
239 }
240
241private:
244
247};
248
249} // namespace core
250} // namespace kcenon::logger
Facade coordinating logger system components.
logger_context & operator=(logger_context &&)=delete
std::shared_ptr< security::signal_manager_interface > get_signal_manager() const
Get signal manager instance.
logger_registry registry_
Logger registration tracking.
auto registry() -> logger_registry &
Access logger registry component.
void unregister_logger(security::critical_logger_interface *log)
Unregister a logger.
signal_manager_context signal_context_
Signal manager lifecycle management.
auto signal_context() const -> const signal_manager_context &
Access signal manager context component (const)
logger_context & operator=(const logger_context &)=delete
logger_context(logger_context &&)=delete
void set_signal_manager(std::shared_ptr< security::signal_manager_interface > signal_mgr)
Set signal manager (for dynamic reconfiguration)
auto signal_context() -> signal_manager_context &
Access signal manager context component.
bool is_initialized() const
Check if context is initialized.
~logger_context()
Destructor - ensures clean shutdown.
logger_context(const logger_context &)=delete
void register_logger(security::critical_logger_interface *log)
Register a logger.
auto registry() const -> const logger_registry &
Access logger registry component (const)
Manages registration and unregistration of loggers.
Manages signal manager instance with thread-safe access.
Interface for loggers that support emergency flushing.
DLL export/import macros for logger_system shared library support.
#define LOGGER_SYSTEM_API
Manages logger registration and tracking.
Manages signal manager lifecycle and access.
Interface for signal handler management.