|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
Configuration for log sampling behavior. More...
#include <sampling_config.h>

Public Member Functions | |
| sampling_config | with_always_log (std::vector< log_level > levels) && |
| sampling_config | with_always_log (std::vector< log_level > levels) const & |
| Set log levels that bypass sampling (fluent interface, lvalue overload) | |
Static Public Member Functions | |
| static sampling_config | disabled () |
| Create a default sampling configuration (disabled) | |
| static sampling_config | random_sampling (double sample_rate) |
| Create a random sampling configuration. | |
| static sampling_config | rate_limited (std::size_t max_per_second) |
| Create a rate limiting configuration. | |
| static sampling_config | adaptive (std::size_t threshold, double min_rate=0.01) |
| Create an adaptive sampling configuration. | |
| static sampling_config | hash_based (double sample_rate, std::uint64_t seed=0) |
| Create a hash-based sampling configuration. | |
Public Attributes | |
| bool | enabled = false |
| Enable or disable sampling. | |
| double | rate = 1.0 |
| Base sampling rate (0.0 to 1.0) | |
| sampling_strategy | strategy = sampling_strategy::random |
| Sampling strategy to use. | |
| std::vector< log_level > | always_log_levels |
| Log levels that are never sampled (always logged) | |
| std::unordered_map< std::string, double > | category_rates |
| std::unordered_map< std::string, std::unordered_map< std::string, double > > | field_rates |
| std::vector< std::string > | always_log_fields |
| std::size_t | rate_limit_per_second = 1000 |
| Maximum logs per second for rate limiting strategy. | |
| std::size_t | rate_limit_window_ms = 1000 |
| Time window for rate limiting (milliseconds) | |
| bool | adaptive_enabled = false |
| Enable adaptive sampling. | |
| std::size_t | adaptive_threshold = 10000 |
| Threshold (messages/second) to trigger adaptive sampling. | |
| double | adaptive_min_rate = 0.01 |
| Minimum sampling rate when adaptive sampling is active. | |
| std::uint64_t | hash_seed = 0 |
| Seed for hash-based sampling. | |
Configuration for log sampling behavior.
Controls how logs are sampled to reduce volume in high-throughput scenarios. Critical levels can be configured to bypass sampling entirely.
Definition at line 76 of file sampling_config.h.
|
inlinestatic |
Create an adaptive sampling configuration.
| threshold | Messages/second threshold to trigger adaptation |
| min_rate | Minimum sampling rate under load |
Definition at line 239 of file sampling_config.h.
References kcenon::logger::sampling::adaptive, adaptive_enabled, adaptive_min_rate, adaptive_threshold, enabled, and strategy.
Referenced by kcenon::logger::sampling::sampler_factory::create_adaptive().

|
inlinestatic |
Create a default sampling configuration (disabled)
Definition at line 203 of file sampling_config.h.
Referenced by kcenon::logger::sampling::sampler_factory::create_disabled().

|
inlinestatic |
Create a hash-based sampling configuration.
| sample_rate | Sampling rate (0.0 to 1.0) |
| seed | Optional seed for reproducibility |
Definition at line 255 of file sampling_config.h.
References enabled, kcenon::logger::sampling::hash_based, hash_seed, rate, and strategy.
|
inlinestatic |
Create a random sampling configuration.
| sample_rate | Sampling rate (0.0 to 1.0) |
Definition at line 212 of file sampling_config.h.
References enabled, kcenon::logger::sampling::random, rate, and strategy.
Referenced by kcenon::logger::sampling::sampler_factory::create_random().

|
inlinestatic |
Create a rate limiting configuration.
| max_per_second | Maximum logs per second |
Definition at line 225 of file sampling_config.h.
References enabled, rate_limit_per_second, kcenon::logger::sampling::rate_limiting, and strategy.
Referenced by kcenon::logger::sampling::sampler_factory::create_rate_limited().

|
inline |
Definition at line 277 of file sampling_config.h.
References always_log_levels.
|
inline |
Set log levels that bypass sampling (fluent interface, lvalue overload)
| levels | Log levels that should always be logged |
Definition at line 289 of file sampling_config.h.
References always_log_levels.
| bool kcenon::logger::sampling::sampling_config::adaptive_enabled = false |
Enable adaptive sampling.
When true and strategy is adaptive, the sampler automatically reduces the sampling rate under high load
Definition at line 177 of file sampling_config.h.
Referenced by adaptive(), and kcenon::logger::sampling::sampler_factory::create_production().
| double kcenon::logger::sampling::sampling_config::adaptive_min_rate = 0.01 |
Minimum sampling rate when adaptive sampling is active.
Even under extreme load, at least this percentage of logs are kept
Definition at line 189 of file sampling_config.h.
Referenced by adaptive(), kcenon::logger::sampling::sampler_factory::create_production(), and kcenon::logger::sampling::log_sampler::update_adaptive_rate().
| std::size_t kcenon::logger::sampling::sampling_config::adaptive_threshold = 10000 |
Threshold (messages/second) to trigger adaptive sampling.
When log rate exceeds this threshold, adaptive sampling kicks in
Definition at line 183 of file sampling_config.h.
Referenced by adaptive(), kcenon::logger::sampling::sampler_factory::create_production(), and kcenon::logger::sampling::log_sampler::update_adaptive_rate().
| std::vector<std::string> kcenon::logger::sampling::sampling_config::always_log_fields |
Definition at line 154 of file sampling_config.h.
Referenced by kcenon::logger::sampling::log_sampler::should_bypass_field().
| std::vector<log_level> kcenon::logger::sampling::sampling_config::always_log_levels |
Log levels that are never sampled (always logged)
Critical levels should bypass sampling to ensure important messages are never dropped. Default includes error and critical.
Definition at line 103 of file sampling_config.h.
Referenced by kcenon::logger::sampling::sampler_factory::create_production(), kcenon::logger::sampling::log_sampler::should_bypass_level(), with_always_log(), and with_always_log().
| std::unordered_map<std::string, double> kcenon::logger::sampling::sampling_config::category_rates |
Definition at line 120 of file sampling_config.h.
Referenced by kcenon::logger::sampling::log_sampler::get_category_rate().
| bool kcenon::logger::sampling::sampling_config::enabled = false |
Enable or disable sampling.
When false, all logs are passed through without sampling
Definition at line 81 of file sampling_config.h.
Referenced by adaptive(), kcenon::logger::sampling::sampler_factory::create_production(), hash_based(), kcenon::logger::sampling::log_sampler::is_enabled(), random_sampling(), rate_limited(), kcenon::logger::sampling::log_sampler::set_enabled(), kcenon::logger::sampling::log_sampler::should_sample(), and kcenon::logger::sampling::log_sampler::should_sample().
| std::unordered_map<std::string, std::unordered_map<std::string, double> > kcenon::logger::sampling::sampling_config::field_rates |
Definition at line 140 of file sampling_config.h.
Referenced by kcenon::logger::sampling::log_sampler::get_field_rate().
| std::uint64_t kcenon::logger::sampling::sampling_config::hash_seed = 0 |
Seed for hash-based sampling.
Used to make hash-based sampling reproducible
Definition at line 197 of file sampling_config.h.
Referenced by hash_based(), and kcenon::logger::sampling::log_sampler::hash_sample().
| double kcenon::logger::sampling::sampling_config::rate = 1.0 |
Base sampling rate (0.0 to 1.0)
Probability that a log message will be sampled (kept).
Definition at line 90 of file sampling_config.h.
Referenced by kcenon::logger::sampling::sampler_factory::create_production(), kcenon::logger::sampling::log_sampler::get_category_rate(), hash_based(), kcenon::logger::sampling::log_sampler::log_sampler(), random_sampling(), kcenon::logger::sampling::log_sampler::set_config(), kcenon::logger::sampling::log_sampler::should_sample(), kcenon::logger::sampling::log_sampler::should_sample(), and kcenon::logger::sampling::log_sampler::update_adaptive_rate().
| std::size_t kcenon::logger::sampling::sampling_config::rate_limit_per_second = 1000 |
Maximum logs per second for rate limiting strategy.
Used when strategy is rate_limiting
Definition at line 162 of file sampling_config.h.
Referenced by kcenon::logger::sampling::log_sampler::rate_limit_sample(), and rate_limited().
| std::size_t kcenon::logger::sampling::sampling_config::rate_limit_window_ms = 1000 |
Time window for rate limiting (milliseconds)
The window over which rate limiting is applied
Definition at line 168 of file sampling_config.h.
Referenced by kcenon::logger::sampling::log_sampler::rate_limit_sample().
| sampling_strategy kcenon::logger::sampling::sampling_config::strategy = sampling_strategy::random |
Sampling strategy to use.
Determines the algorithm for selecting which logs to keep
Definition at line 96 of file sampling_config.h.
Referenced by adaptive(), kcenon::logger::sampling::sampler_factory::create_production(), hash_based(), random_sampling(), rate_limited(), kcenon::logger::sampling::log_sampler::should_sample(), and kcenon::logger::sampling::log_sampler::should_sample().