15#include <kcenon/common/interfaces/logger_interface.h>
16#include <kcenon/common/interfaces/global_logger_registry.h>
17#include <kcenon/common/interfaces/monitoring_interface.h>
25using ILogger = common::interfaces::ILogger;
46 :
logger_(common::interfaces::GlobalLoggerRegistry::instance().get_default_logger())
56 std::shared_ptr<ILogger>
logger,
57 std::shared_ptr<IMonitor>
monitoring =
nullptr)
66 std::shared_ptr<ILogger>
logger()
const {
86 void log(common::interfaces::log_level level,
const std::string& message)
const {
123 void log(common::interfaces::log_level level,
124 std::string_view message,
125 const common::source_location& loc = common::source_location::current())
const {
131 logger_->log(level, message, loc);
148 std::unordered_map<std::string, std::string> tags{{
"component",
"system"}};
149 monitoring_->record_metric(
"cpu_usage_percent", metrics.cpu_usage_percent.value, tags);
150 monitoring_->record_metric(
"memory_usage_bytes", metrics.memory_usage_bytes.value, tags);
151 monitoring_->record_metric(
"active_threads", metrics.active_threads.value, tags);
152 monitoring_->record_metric(
"total_allocations", metrics.total_allocations.value, tags);
169 std::unordered_map<std::string, std::string> tags{
170 {
"component",
"thread_pool"},
171 {
"pool_name", metrics.pool_name},
172 {
"pool_instance_id", std::to_string(metrics.pool_instance_id)}
174 monitoring_->record_metric(
"jobs_completed", metrics.jobs_completed.value, tags);
175 monitoring_->record_metric(
"jobs_pending", metrics.jobs_pending.value, tags);
176 monitoring_->record_metric(
"worker_threads", metrics.worker_threads.value, tags);
177 monitoring_->record_metric(
"idle_threads", metrics.idle_threads.value, tags);
178 monitoring_->record_metric(
"average_latency_ns", metrics.average_latency_ns.value, tags);
179 monitoring_->record_metric(
"total_execution_time_ns", metrics.total_execution_time_ns.value, tags);
193 std::uint32_t pool_instance_id,
194 const common::interfaces::thread_pool_metrics& metrics)
const {
200 std::unordered_map<std::string, std::string> tags{
201 {
"component",
"thread_pool"},
202 {
"pool_name", pool_name},
203 {
"pool_instance_id", std::to_string(pool_instance_id)}
205 monitoring_->record_metric(
"jobs_completed", metrics.jobs_completed.value, tags);
206 monitoring_->record_metric(
"jobs_pending", metrics.jobs_pending.value, tags);
207 monitoring_->record_metric(
"worker_threads", metrics.worker_threads.value, tags);
208 monitoring_->record_metric(
"idle_threads", metrics.idle_threads.value, tags);
209 monitoring_->record_metric(
"average_latency_ns", metrics.average_latency_ns.value, tags);
210 monitoring_->record_metric(
"total_execution_time_ns", metrics.total_execution_time_ns.value, tags);
223 const common::interfaces::worker_metrics& metrics)
const {
229 std::unordered_map<std::string, std::string> tags{
230 {
"component",
"worker"},
231 {
"worker_id", std::to_string(worker_id)}
233 monitoring_->record_metric(
"jobs_processed", metrics.jobs_processed.value, tags);
234 monitoring_->record_metric(
"total_processing_time_ns", metrics.total_processing_time_ns.value, tags);
235 monitoring_->record_metric(
"idle_time_ns", metrics.idle_time_ns.value, tags);
236 monitoring_->record_metric(
"context_switches", metrics.context_switches.value, tags);
299 default:
return common::interfaces::log_level::info;
323 logger_ = common::interfaces::GlobalLoggerRegistry::instance().get_default_logger();
Modern service container for dependency injection.
static service_container & global()
Get the global service container instance.
std::shared_ptr< Interface > resolve()
Resolve a service.
Builder for thread_context with fluent interface.
thread_context_builder & with_monitoring(std::shared_ptr< IMonitor > monitoring)
thread_context_builder & from_global_registry()
thread_context_builder & with_logger(std::shared_ptr< ILogger > logger)
std::shared_ptr< ILogger > logger_
std::shared_ptr< IMonitor > monitoring_
thread_context build() const
Context object that provides access to optional services.
std::string context_name_
std::shared_ptr< ILogger > logger_
std::shared_ptr< ILogger > logger() const
Get the logger service.
static common::interfaces::log_level to_common_level(log_level_v2 level)
Convert log_level_v2 to common::interfaces::log_level.
auto get_context_name() const -> std::string
Get context name.
std::shared_ptr< IMonitor > monitoring() const
Get the monitoring service.
void update_system_metrics(const common::interfaces::system_metrics &metrics) const
Update system metrics if monitoring is available.
void log(common::interfaces::log_level level, const std::string &message) const
Log a message if logger is available.
void log(log_level_v2 level, const std::string &message) const
Log a message if logger is available (v2 API with conversion)
std::shared_ptr< IMonitor > monitoring_
thread_context(std::shared_ptr< ILogger > logger, std::shared_ptr< IMonitor > monitoring=nullptr)
Constructor with explicit service injection.
void update_thread_pool_metrics(const common::interfaces::thread_pool_metrics &metrics) const
Update thread pool metrics if monitoring is available.
void update_worker_metrics(std::size_t worker_id, const common::interfaces::worker_metrics &metrics) const
Update worker metrics if monitoring is available.
thread_context()
Default constructor - resolves services from global registry.
auto has_monitoring() const -> bool
Check if monitoring is available.
void update_thread_pool_metrics(const std::string &pool_name, std::uint32_t pool_instance_id, const common::interfaces::thread_pool_metrics &metrics) const
Update thread pool metrics with pool identifier.
auto set_context_name(const std::string &name) -> bool
Set context name.
auto has_logger() const -> bool
Check if logger is available.
void log(common::interfaces::log_level level, std::string_view message, const common::source_location &loc=common::source_location::current()) const
Log a message with source location if logger is available.
thread_context create_child() const
Create a child context with the same services.
static bool is_shutting_down()
Check if shutdown is in progress.
Logging severity levels for the thread system.
Core threading foundation of the thread system library.
common::interfaces::ILogger ILogger
log_level_v2
Logging severity levels with explicit ascending values.
@ trace
Finest-grained informational events.
@ warn
Potentially harmful situations.
@ off
Special level to disable logging.
@ critical
Severe error events that lead to termination.
@ debug
Fine-grained informational events for debugging.
@ info
Informational messages highlighting progress.
@ error
Error events that might still allow continuation.
common::interfaces::IMonitor IMonitor
Service container for dependency injection within the thread system.
Internal logging interface for the thread system.