Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
kcenon::logger::deployment_strategy Class Reference

Configuration strategy based on deployment environment. More...

#include <deployment_strategy.h>

Inheritance diagram for kcenon::logger::deployment_strategy:
Inheritance graph
Collaboration diagram for kcenon::logger::deployment_strategy:
Collaboration graph

Public Member Functions

 deployment_strategy (deployment_env env)
 Constructor with deployment environment.
 
std::string get_name () const override
 Get the strategy name.
 
void apply (logger_config &config) const override
 Apply this strategy to a logger configuration.
 
int priority () const override
 Get the strategy priority.
 
- Public Member Functions inherited from kcenon::logger::config_strategy_interface
virtual ~config_strategy_interface ()=default
 
virtual bool is_applicable () const
 Check if this strategy is applicable in the current context.
 

Static Private Member Functions

static void apply_development (logger_config &config)
 
static void apply_staging (logger_config &config)
 
static void apply_production (logger_config &config)
 
static void apply_testing (logger_config &config)
 
static std::string env_to_string (deployment_env env)
 

Private Attributes

deployment_env env_
 

Detailed Description

Configuration strategy based on deployment environment.

Applies environment-appropriate settings for the logger. Each environment type is optimized for its specific use case.

Since
2.0.0

Definition at line 45 of file deployment_strategy.h.

Constructor & Destructor Documentation

◆ deployment_strategy()

kcenon::logger::deployment_strategy::deployment_strategy ( deployment_env env)
inlineexplicit

Constructor with deployment environment.

Parameters
envThe deployment environment to configure for

Definition at line 51 of file deployment_strategy.h.

52 : env_(env) {}

Member Function Documentation

◆ apply()

void kcenon::logger::deployment_strategy::apply ( logger_config & config) const
inlineoverridevirtual

Apply this strategy to a logger configuration.

Parameters
configThe configuration to modify

Modifies the provided configuration according to the strategy's rules. Changes are applied in-place.

Implements kcenon::logger::config_strategy_interface.

Definition at line 58 of file deployment_strategy.h.

58 {
59 switch (env_) {
61 apply_development(config);
62 break;
64 apply_staging(config);
65 break;
67 apply_production(config);
68 break;
70 apply_testing(config);
71 break;
72 }
73 }
static void apply_staging(logger_config &config)
static void apply_development(logger_config &config)
static void apply_testing(logger_config &config)
static void apply_production(logger_config &config)
@ development
Development environment (verbose, colorful)
@ staging
Staging environment (JSON, file + console)
@ testing
Testing environment (memory buffer, sync)
@ production
Production environment (optimized, safe)

References apply_development(), apply_production(), apply_staging(), apply_testing(), kcenon::logger::development, env_, kcenon::logger::production, kcenon::logger::staging, and kcenon::logger::testing.

Here is the call graph for this function:

◆ apply_development()

static void kcenon::logger::deployment_strategy::apply_development ( logger_config & config)
inlinestaticprivate

Definition at line 82 of file deployment_strategy.h.

82 {
83 config.async = false;
84 config.min_level = log_level::trace;
85 config.enable_metrics = true;
86 config.enable_crash_handler = true;
87 config.enable_color_output = true;
88 config.enable_source_location = true;
89 config.enable_structured_logging = false;
90 config.batch_size = 1;
91 config.flush_interval = std::chrono::milliseconds(0);
92 }

References kcenon::logger::logger_config::async, kcenon::logger::logger_config::batch_size, kcenon::logger::logger_config::enable_color_output, kcenon::logger::logger_config::enable_crash_handler, kcenon::logger::logger_config::enable_metrics, kcenon::logger::logger_config::enable_source_location, kcenon::logger::logger_config::enable_structured_logging, kcenon::logger::logger_config::flush_interval, and kcenon::logger::logger_config::min_level.

Referenced by apply().

Here is the caller graph for this function:

◆ apply_production()

static void kcenon::logger::deployment_strategy::apply_production ( logger_config & config)
inlinestaticprivate

Definition at line 109 of file deployment_strategy.h.

109 {
110 config.async = true;
111 config.min_level = log_level::warn;
112 config.enable_metrics = true;
113 config.enable_crash_handler = true;
114 config.enable_color_output = false;
115 config.enable_source_location = false;
116 config.enable_structured_logging = true;
117 config.buffer_size = 32768;
118 config.batch_size = 200;
119 config.flush_interval = std::chrono::milliseconds(2000);
120 config.max_file_size = 100 * 1024 * 1024; // 100MB
121 config.max_file_count = 10;
122 config.enable_compression = true;
123 config.enable_batch_writing = true;
124 config.queue_overflow_policy = logger_config::overflow_policy::drop_oldest;
125 }

References kcenon::logger::logger_config::async, kcenon::logger::logger_config::batch_size, kcenon::logger::logger_config::buffer_size, kcenon::logger::logger_config::enable_batch_writing, kcenon::logger::logger_config::enable_color_output, kcenon::logger::logger_config::enable_compression, kcenon::logger::logger_config::enable_crash_handler, kcenon::logger::logger_config::enable_metrics, kcenon::logger::logger_config::enable_source_location, kcenon::logger::logger_config::enable_structured_logging, kcenon::logger::logger_config::flush_interval, kcenon::logger::logger_config::max_file_count, kcenon::logger::logger_config::max_file_size, kcenon::logger::logger_config::min_level, and kcenon::logger::logger_config::queue_overflow_policy.

Referenced by apply().

Here is the caller graph for this function:

◆ apply_staging()

static void kcenon::logger::deployment_strategy::apply_staging ( logger_config & config)
inlinestaticprivate

Definition at line 94 of file deployment_strategy.h.

94 {
95 config.async = true;
96 config.min_level = log_level::info;
97 config.enable_metrics = true;
98 config.enable_crash_handler = true;
99 config.enable_color_output = false;
100 config.enable_structured_logging = true;
101 config.buffer_size = 16384;
102 config.batch_size = 100;
103 config.flush_interval = std::chrono::milliseconds(1000);
104 config.max_file_size = 50 * 1024 * 1024; // 50MB
105 config.max_file_count = 5;
106 config.enable_batch_writing = true;
107 }

References kcenon::logger::logger_config::async, kcenon::logger::logger_config::batch_size, kcenon::logger::logger_config::buffer_size, kcenon::logger::logger_config::enable_batch_writing, kcenon::logger::logger_config::enable_color_output, kcenon::logger::logger_config::enable_crash_handler, kcenon::logger::logger_config::enable_metrics, kcenon::logger::logger_config::enable_structured_logging, kcenon::logger::logger_config::flush_interval, kcenon::logger::logger_config::max_file_count, kcenon::logger::logger_config::max_file_size, and kcenon::logger::logger_config::min_level.

Referenced by apply().

Here is the caller graph for this function:

◆ apply_testing()

static void kcenon::logger::deployment_strategy::apply_testing ( logger_config & config)
inlinestaticprivate

Definition at line 127 of file deployment_strategy.h.

127 {
128 config.async = false;
129 config.min_level = log_level::trace;
130 config.enable_metrics = false;
131 config.enable_crash_handler = false;
132 config.enable_color_output = false;
133 config.enable_source_location = true;
134 config.batch_size = 1;
135 config.flush_interval = std::chrono::milliseconds(0);
136 }

References kcenon::logger::logger_config::async, kcenon::logger::logger_config::batch_size, kcenon::logger::logger_config::enable_color_output, kcenon::logger::logger_config::enable_crash_handler, kcenon::logger::logger_config::enable_metrics, kcenon::logger::logger_config::enable_source_location, kcenon::logger::logger_config::flush_interval, and kcenon::logger::logger_config::min_level.

Referenced by apply().

Here is the caller graph for this function:

◆ env_to_string()

static std::string kcenon::logger::deployment_strategy::env_to_string ( deployment_env env)
inlinestaticprivate

Definition at line 138 of file deployment_strategy.h.

138 {
139 switch (env) {
140 case deployment_env::development: return "development";
141 case deployment_env::staging: return "staging";
142 case deployment_env::production: return "production";
143 case deployment_env::testing: return "testing";
144 default: return "unknown";
145 }
146 }

References kcenon::logger::development, kcenon::logger::production, kcenon::logger::staging, and kcenon::logger::testing.

Referenced by get_name().

Here is the caller graph for this function:

◆ get_name()

std::string kcenon::logger::deployment_strategy::get_name ( ) const
inlineoverridevirtual

Get the strategy name.

Returns
Human-readable strategy name

Implements kcenon::logger::config_strategy_interface.

Definition at line 54 of file deployment_strategy.h.

54 {
55 return "deployment:" + env_to_string(env_);
56 }
static std::string env_to_string(deployment_env env)

References env_, and env_to_string().

Here is the call graph for this function:

◆ priority()

int kcenon::logger::deployment_strategy::priority ( ) const
inlineoverridevirtual

Get the strategy priority.

Returns
Priority value (higher = applied first)

When multiple strategies are applied, they are sorted by priority (descending) before application.

Reimplemented from kcenon::logger::config_strategy_interface.

Definition at line 75 of file deployment_strategy.h.

75 {
76 return 75; // Higher than performance, lower than environment
77 }

Member Data Documentation

◆ env_

deployment_env kcenon::logger::deployment_strategy::env_
private

Definition at line 80 of file deployment_strategy.h.

Referenced by apply(), and get_name().


The documentation for this class was generated from the following file: