|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
Builder pattern for logger construction with validation. More...
#include <logger_builder.h>

Public Member Functions | |
| logger_builder () | |
| logger_builder & | with_config (const logger_config &config) |
| logger_builder & | with_async (bool async=true) |
| logger_builder & | with_buffer_size (std::size_t size) |
| Set buffer size. | |
| logger_builder & | with_min_level (log_level level) |
| logger_builder & | with_batch_size (std::size_t size) |
| Set batch size for processing. | |
| logger_builder & | with_batch_writing (bool enable=true) |
| Enable batch writing for writers. | |
| logger_builder & | with_flush_interval (std::chrono::milliseconds interval) |
| Set flush interval. | |
| logger_builder & | with_lock_free (bool enable=true) |
| Enable lock-free queue. | |
| logger_builder & | with_metrics (bool enable=true) |
| Enable metrics collection. | |
| logger_builder & | with_crash_handler (bool enable=true) |
| Enable crash handler. | |
| logger_builder & | with_structured_logging (bool enable=true) |
| Enable structured logging. | |
| logger_builder & | with_overflow_policy (logger_config::overflow_policy policy) |
| Set queue overflow policy. | |
| logger_builder & | with_max_queue_size (std::size_t size) |
| Set max queue size. | |
| logger_builder & | with_file_output (const std::string &directory, const std::string &prefix="app", std::size_t max_size=100 *1024 *1024, std::size_t max_count=5) |
| Configure file output. | |
| logger_builder & | with_network_output (const std::string &host, uint16_t port, std::chrono::milliseconds timeout=std::chrono::milliseconds(5000)) |
| Configure network output. | |
| logger_builder & | add_writer (const std::string &name, log_writer_ptr writer) |
| Add a writer to the logger. | |
| logger_builder & | add_filter (std::unique_ptr< log_filter_interface > filter) |
| logger_builder & | add_level_filter (log_level min_level) |
| Add a level filter (convenience method) | |
| logger_builder & | add_regex_filter (const std::string &pattern, bool include_matches=true) |
| Add a regex filter (convenience method) | |
| logger_builder & | add_function_filter (std::function< bool(const log_entry &)> predicate) |
| Add a function-based filter (convenience method) | |
| logger_builder & | with_route (routing::route_config config) |
| logger_builder & | with_exclusive_routing (bool exclusive=true) |
| Set exclusive routing mode. | |
| logger_builder & | route_level (log_level level, const std::vector< std::string > &writer_names, bool stop_propagation=false) |
| logger_builder & | route_pattern (const std::string &pattern, const std::vector< std::string > &writer_names, bool stop_propagation=false) |
| logger_builder & | with_formatter (std::unique_ptr< log_formatter_interface > formatter) |
| Set formatter for the logger. | |
| logger_builder & | use_template (const std::string &name) |
| logger_builder & | apply_strategy (std::unique_ptr< config_strategy_interface > strategy) |
| Apply a configuration strategy. | |
| logger_builder & | for_environment (deployment_env env) |
| Configure for a specific deployment environment. | |
| logger_builder & | with_performance_tuning (performance_level level) |
| Apply performance tuning. | |
| logger_builder & | auto_configure () |
| Auto-configure from environment variables. | |
| logger_builder & | clear_strategies () |
| Clear all registered strategies. | |
| logger_builder & | detect_environment () |
| Detect environment from environment variables. | |
| logger_builder & | with_monitoring (std::shared_ptr< common::interfaces::IMonitor > monitor) |
| Set monitoring interface (Phase 2.2.4) | |
| logger_builder & | with_health_check_interval (std::chrono::milliseconds interval) |
| Set health check interval. | |
| logger_builder & | with_backend (std::unique_ptr< backends::integration_backend > backend) |
| Set integration backend explicitly. | |
| logger_builder & | with_standalone_backend () |
| Use standalone backend explicitly. | |
| logger_builder & | with_error_handler (std::function< void(const logger_error_code &)> handler) |
| Set error handler. | |
| logger_builder & | with_default_pattern () |
| Use default pattern for logging. | |
| logger_builder & | with_sampler (std::unique_ptr< sampling::log_sampler > sampler) |
| logger_builder & | with_sampling (const sampling::sampling_config &config) |
| result< std::unique_ptr< logger > > | build () |
| const logger_config & | get_config () const |
| Get the current configuration (for inspection) | |
| common::VoidResult | validate () const |
| Validate current configuration without building. | |
Private Attributes | |
| logger_config | config_ |
| std::vector< std::pair< std::string, log_writer_ptr > > | writers_ |
| std::vector< std::unique_ptr< log_filter_interface > > | filters_ |
| std::vector< routing::route_config > | routes_ |
| bool | exclusive_routing_ = false |
| std::unique_ptr< log_formatter_interface > | formatter_ |
| std::unique_ptr< backends::integration_backend > | backend_ |
| std::vector< std::unique_ptr< config_strategy_interface > > | strategies_ |
| logger_config | built_config_ |
| std::shared_ptr< common::interfaces::IMonitor > | monitor_ |
| std::chrono::milliseconds | health_check_interval_ {1000} |
| std::function< void(const logger_error_code &)> | error_handler_ |
| std::unique_ptr< sampling::log_sampler > | sampler_ |
Builder pattern for logger construction with validation.
The logger_builder class provides a fluent interface for constructing logger instances with complex configurations. It ensures configuration validity, applies optimization strategies, and handles the complexity of logger initialization.
Key features:
Definition at line 116 of file logger_builder.h.
|
inline |
Definition at line 118 of file logger_builder.h.
|
inline |
Definition at line 375 of file logger_builder.h.
References filters_.
|
inline |
Add a function-based filter (convenience method)
| predicate | Function that returns true for entries that should pass |
Definition at line 414 of file logger_builder.h.
References filters_.
|
inline |
Add a level filter (convenience method)
| min_level | Minimum log level to pass through |
Definition at line 389 of file logger_builder.h.
References filters_.
|
inline |
Add a regex filter (convenience method)
| pattern | Regex pattern to match against log messages |
| include_matches | If true, only matching messages pass; if false, non-matching pass |
Definition at line 402 of file logger_builder.h.
References filters_.
|
inline |
Add a writer to the logger.
| name | Writer name |
| writer | Writer instance |
Definition at line 352 of file logger_builder.h.
References writers_.
Referenced by example_production_setup(), and main().

|
inline |
Apply a configuration strategy.
| strategy | Strategy to apply during build |
Strategies are applied in priority order during build(). Higher priority strategies are applied first.
Definition at line 586 of file logger_builder.h.
References strategies_.
Referenced by auto_configure(), for_environment(), and with_performance_tuning().

|
inline |
Auto-configure from environment variables.
Reads LOG_* environment variables and applies them:
Definition at line 637 of file logger_builder.h.
References apply_strategy().

Definition at line 940 of file logger_builder.h.
References kcenon::logger::filters::composite_filter::AND, kcenon::logger::logger_config::async, backend_, kcenon::logger::logger_config::batch_size, kcenon::logger::logger_config::buffer_size, built_config_, kcenon::logger::composite, config_, kcenon::logger::logger_config::enable_batch_writing, kcenon::logger::logger_config::enable_color_output, kcenon::logger::logger_config::enable_metrics, exclusive_routing_, filters_, kcenon::logger::batch_writer::config::flush_interval, kcenon::logger::logger_config::flush_interval, kcenon::logger::invalid_configuration, kcenon::logger::batch_writer::config::max_batch_size, kcenon::logger::logger_config::max_writers, kcenon::logger::logger_config::min_level, routes_, sampler_, strategies_, kcenon::logger::logger_config::validate(), and writers_.
Referenced by example_1_basic_di_pattern(), example_1_basic_integration(), example_2_multiple_loggers(), example_2_optional_monitor(), example_3_imonitorable_interface(), example_3_runtime_monitor_injection(), example_4_monitor_swapping(), example_4_monitoring_system_simulation(), example_5_interface_based_usage(), and main().


|
inline |
Clear all registered strategies.
Definition at line 651 of file logger_builder.h.
References strategies_.
|
inline |
Detect environment from environment variables.
Definition at line 661 of file logger_builder.h.
References config_, kcenon::logger::logger_config::min_level, and use_template().

|
inline |
Configure for a specific deployment environment.
| env | Deployment environment type |
Applies pre-configured settings optimized for the environment:
Definition at line 606 of file logger_builder.h.
References apply_strategy().

|
inline |
Get the current configuration (for inspection)
Definition at line 1064 of file logger_builder.h.
References config_.
|
inline |
Definition at line 484 of file logger_builder.h.
References kcenon::logger::routing::route_config::filter, routes_, kcenon::logger::routing::route_config::stop_propagation, and kcenon::logger::routing::route_config::writer_names.
|
inline |
Definition at line 513 of file logger_builder.h.
References kcenon::logger::routing::route_config::filter, routes_, kcenon::logger::routing::route_config::stop_propagation, and kcenon::logger::routing::route_config::writer_names.
|
inline |
Definition at line 560 of file logger_builder.h.
References config_, kcenon::logger::logger_config::debug_config(), kcenon::logger::logger_config::default_config(), kcenon::logger::logger_config::high_performance(), kcenon::logger::logger_config::low_latency(), and kcenon::logger::logger_config::production().
Referenced by detect_environment().


|
inline |
Validate current configuration without building.
Definition at line 1072 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::validate().

|
inline |
Definition at line 166 of file logger_builder.h.
References kcenon::logger::logger_config::async, kcenon::logger::logger_config::batch_size, and config_.
Referenced by example_1_basic_di_pattern(), example_1_basic_integration(), example_2_multiple_loggers(), example_2_optional_monitor(), example_3_imonitorable_interface(), example_3_runtime_monitor_injection(), example_4_monitor_swapping(), example_4_monitoring_system_simulation(), example_5_interface_based_usage(), and example_production_setup().

|
inline |
Set integration backend explicitly.
| backend | Custom integration backend |
Allows setting a custom integration backend instead of using the auto-detected one. Useful for testing or custom integration scenarios.
Definition at line 719 of file logger_builder.h.
References backend_.
|
inline |
Set batch size for processing.
| size | Batch size |
Definition at line 226 of file logger_builder.h.
References kcenon::logger::logger_config::batch_size, config_, and kcenon::logger::size.
|
inline |
Enable batch writing for writers.
| enable | Enable/disable batch writing |
Definition at line 236 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::enable_batch_writing.
|
inline |
Set buffer size.
| size | Buffer size in bytes |
Configures the internal buffer size for log message queuing. Larger buffers can improve throughput but increase memory usage.
Definition at line 192 of file logger_builder.h.
References kcenon::logger::logger_config::buffer_size, config_, and kcenon::logger::size.
Referenced by example_production_setup().

|
inline |
Definition at line 139 of file logger_builder.h.
References config_.
|
inline |
Enable crash handler.
| enable | Enable/disable crash handler |
Definition at line 276 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::enable_crash_handler.
|
inline |
Use default pattern for logging.
Definition at line 844 of file logger_builder.h.
References config_, kcenon::logger::logger_config::enable_source_location, and kcenon::logger::logger_config::enable_timestamp.
|
inline |
Set error handler.
| handler | Error handler function |
Definition at line 743 of file logger_builder.h.
References error_handler_.
|
inline |
Set exclusive routing mode.
| exclusive | If true, only matched routes receive logs; otherwise all writers receive |
In exclusive mode, only writers matched by routing rules receive log messages. In non-exclusive mode (default), all writers receive messages regardless of routing.
Definition at line 461 of file logger_builder.h.
References exclusive_routing_.
|
inline |
Configure file output.
| directory | Log directory |
| prefix | File prefix |
| max_size | Maximum file size |
| max_count | Maximum file count for rotation |
Definition at line 319 of file logger_builder.h.
References config_, kcenon::logger::logger_config::log_directory, kcenon::logger::logger_config::log_file_prefix, kcenon::logger::logger_config::max_file_count, and kcenon::logger::logger_config::max_file_size.
|
inline |
Set flush interval.
| interval | Flush interval |
Definition at line 246 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::flush_interval.
|
inline |
Set formatter for the logger.
| formatter | Formatter instance |
Definition at line 529 of file logger_builder.h.
References formatter_.
|
inline |
Set health check interval.
| interval | Health check interval |
Definition at line 703 of file logger_builder.h.
References health_check_interval_.
|
inline |
Enable lock-free queue.
| enable | Enable/disable lock-free mode |
Definition at line 256 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::use_lock_free.
|
inline |
Set max queue size.
| size | Maximum queue size |
Definition at line 306 of file logger_builder.h.
References config_, kcenon::logger::logger_config::max_queue_size, and kcenon::logger::size.
|
inline |
Enable metrics collection.
| enable | Enable/disable metrics |
Definition at line 266 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::enable_metrics.
|
inline |
Definition at line 216 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::min_level.
Referenced by example_1_basic_di_pattern(), example_2_optional_monitor(), example_production_setup(), and main().

|
inline |
Set monitoring interface (Phase 2.2.4)
| monitor | IMonitor implementation from common_system |
Definition at line 692 of file logger_builder.h.
References config_, kcenon::logger::logger_config::enable_metrics, and monitor_.
Referenced by example_1_basic_di_pattern(), example_1_basic_integration(), example_2_multiple_loggers(), example_3_imonitorable_interface(), example_4_monitoring_system_simulation(), and example_5_interface_based_usage().

|
inline |
Configure network output.
| host | Remote host |
| port | Remote port |
| timeout | Connection timeout |
Definition at line 337 of file logger_builder.h.
References config_, kcenon::logger::logger_config::network_timeout, kcenon::logger::logger_config::remote_host, and kcenon::logger::logger_config::remote_port.
|
inline |
Set queue overflow policy.
| policy | Overflow policy to use |
Definition at line 296 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::queue_overflow_policy.
|
inline |
Apply performance tuning.
| level | Performance tuning level |
Applies performance-optimized settings:
Definition at line 623 of file logger_builder.h.
References apply_strategy().

|
inline |
Definition at line 446 of file logger_builder.h.
References routes_.
|
inline |
Definition at line 875 of file logger_builder.h.
References sampler_.
|
inline |
Definition at line 898 of file logger_builder.h.
References sampler_.
|
inline |
Use standalone backend explicitly.
Explicitly selects the standalone integration backend. This is the default backend when no external integration is required.
Definition at line 733 of file logger_builder.h.
References backend_.
|
inline |
Enable structured logging.
| enable | Enable/disable structured logging |
Definition at line 286 of file logger_builder.h.
References config_, and kcenon::logger::logger_config::enable_structured_logging.
|
private |
Definition at line 1083 of file logger_builder.h.
Referenced by build(), with_backend(), and with_standalone_backend().
|
mutableprivate |
Definition at line 1085 of file logger_builder.h.
Referenced by build().
|
private |
Definition at line 1077 of file logger_builder.h.
Referenced by build(), detect_environment(), get_config(), use_template(), validate(), with_async(), with_batch_size(), with_batch_writing(), with_buffer_size(), with_config(), with_crash_handler(), with_default_pattern(), with_file_output(), with_flush_interval(), with_lock_free(), with_max_queue_size(), with_metrics(), with_min_level(), with_monitoring(), with_network_output(), with_overflow_policy(), and with_structured_logging().
|
private |
Definition at line 1088 of file logger_builder.h.
Referenced by with_error_handler().
|
private |
Definition at line 1081 of file logger_builder.h.
Referenced by build(), and with_exclusive_routing().
|
private |
Definition at line 1079 of file logger_builder.h.
Referenced by add_filter(), add_function_filter(), add_level_filter(), add_regex_filter(), and build().
|
private |
Definition at line 1082 of file logger_builder.h.
Referenced by with_formatter().
|
private |
Definition at line 1087 of file logger_builder.h.
Referenced by with_health_check_interval().
|
private |
Definition at line 1086 of file logger_builder.h.
Referenced by with_monitoring().
|
private |
Definition at line 1080 of file logger_builder.h.
Referenced by build(), route_level(), route_pattern(), and with_route().
|
private |
Definition at line 1092 of file logger_builder.h.
Referenced by build(), with_sampler(), and with_sampling().
|
private |
Definition at line 1084 of file logger_builder.h.
Referenced by apply_strategy(), build(), and clear_strategies().
|
private |
Definition at line 1078 of file logger_builder.h.
Referenced by add_writer(), and build().