Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
logger_config_builder.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
12#pragma once
13
16
17namespace kcenon::logger {
18
40public:
45
46 // =========================================================================
47 // Preset Configurations
48 // =========================================================================
49
58
67
76
85
94
95 // =========================================================================
96 // Basic Settings
97 // =========================================================================
98
105 config_.async = enabled;
106 return *this;
107 }
108
116 return *this;
117 }
118
125 config_.min_level = level;
126 return *this;
127 }
128
129 // =========================================================================
130 // Performance Settings
131 // =========================================================================
132
140 return *this;
141 }
142
148 logger_config_builder& set_flush_interval(std::chrono::milliseconds interval) {
149 config_.flush_interval = interval;
150 return *this;
151 }
152
159 config_.use_lock_free = enabled;
160 return *this;
161 }
162
169 config_.max_writers = max;
170 return *this;
171 }
172
180 return *this;
181 }
182
190 return *this;
191 }
192
193 // =========================================================================
194 // Feature Flags
195 // =========================================================================
196
203 config_.enable_metrics = enabled;
204 return *this;
205 }
206
214 return *this;
215 }
216
224 return *this;
225 }
226
234 return *this;
235 }
236
243 config_.enable_timestamp = enabled;
244 return *this;
245 }
246
254 return *this;
255 }
256
263 config_.enable_compression = enabled;
264 return *this;
265 }
266
267 // =========================================================================
268 // Queue Settings
269 // =========================================================================
270
278 return *this;
279 }
280
290
291 // =========================================================================
292 // File Output Settings
293 // =========================================================================
294
302 return *this;
303 }
304
311 config_.max_file_count = count;
312 return *this;
313 }
314
320 logger_config_builder& set_log_directory(const std::string& directory) {
321 config_.log_directory = directory;
322 return *this;
323 }
324
330 logger_config_builder& set_log_file_prefix(const std::string& prefix) {
331 config_.log_file_prefix = prefix;
332 return *this;
333 }
334
335 // =========================================================================
336 // Network Settings
337 // =========================================================================
338
345 logger_config_builder& set_remote_logging(const std::string& host, uint16_t port) {
346 config_.remote_host = host;
347 config_.remote_port = port;
348 return *this;
349 }
350
356 logger_config_builder& set_network_timeout(std::chrono::milliseconds timeout) {
357 config_.network_timeout = timeout;
358 return *this;
359 }
360
368 return *this;
369 }
370
371 // =========================================================================
372 // Build Methods
373 // =========================================================================
374
382 auto validation_result = config_.validate();
383 if (!validation_result.is_ok()) {
386 "Configuration validation failed: " + validation_result.error().message};
387 }
389 }
390
397 return config_;
398 }
399
406 return *this;
407 }
408
409private:
411};
412
413} // namespace kcenon::logger
Fluent builder for logger_config.
logger_config_builder & set_max_file_count(std::size_t count)
Set maximum number of rotated files.
logger_config build_unchecked() const
Build the logger_config without validation.
logger_config_builder()=default
Default constructor - starts with default configuration.
logger_config_builder & use_lock_free(bool enabled)
Enable/disable lock-free queue.
logger_config_builder & enable_timestamp(bool enabled)
Enable/disable timestamp in log messages.
logger_config_builder & set_buffer_size(std::size_t size)
Set buffer size.
logger_config_builder & set_max_file_size(std::size_t size)
Set maximum file size for rotation.
logger_config_builder & enable_structured_logging(bool enabled)
Enable/disable structured logging.
logger_config_builder & set_network_retry_count(std::size_t count)
Set network retry count.
logger_config_builder & enable_metrics(bool enabled)
Enable/disable metrics collection.
logger_config_builder & set_flush_interval(std::chrono::milliseconds interval)
Set flush interval.
logger_config_builder & reset()
Reset to default configuration.
logger_config_builder & use_debug_defaults()
Use debug configuration as base.
logger_config_builder & set_network_timeout(std::chrono::milliseconds timeout)
Set network timeout.
logger_config_builder & set_writer_thread_count(std::size_t count)
Set writer thread count.
logger_config_builder & use_production_defaults()
Use production configuration as base.
logger_config_builder & set_overflow_policy(logger_config::overflow_policy policy)
Set queue overflow policy.
logger_config_builder & enable_crash_handler(bool enabled)
Enable/disable crash handler.
logger_config_builder & use_low_latency_defaults()
Use low-latency configuration as base.
logger_config_builder & enable_source_location(bool enabled)
Enable/disable source location in log messages.
logger_config_builder & set_log_directory(const std::string &directory)
Set log directory.
logger_config_builder & use_high_performance_defaults()
Use high-performance configuration as base.
logger_config_builder & set_max_queue_size(std::size_t size)
Set maximum queue size.
logger_config_builder & set_async(bool enabled)
Set asynchronous logging mode.
result< logger_config > build() const
Build the logger_config.
logger_config_builder & use_default_config()
Use default configuration as base.
logger_config_builder & set_log_file_prefix(const std::string &prefix)
Set log file prefix.
logger_config_builder & set_remote_logging(const std::string &host, uint16_t port)
Set remote logging host.
logger_config_builder & set_max_writers(std::size_t max)
Set maximum number of writers.
logger_config_builder & enable_compression(bool enabled)
Enable/disable compression.
logger_config_builder & set_min_level(log_level level)
Set minimum log level.
logger_config_builder & enable_batch_writing(bool enabled)
Enable/disable batch writing.
logger_config_builder & set_batch_size(std::size_t size)
Set batch size for batch writing.
logger_config_builder & enable_color_output(bool enabled)
Enable/disable color output.
Error codes specific to the logger system.
Configuration structure for logger with validation.
@ size
Rotate based on file size only.
Configuration structure for logger with validation.
log_level min_level
Minimum log level to process.
std::size_t batch_size
Number of messages per batch write.
std::size_t network_retry_count
Number of network retry attempts.
static logger_config low_latency()
Create a low-latency configuration.
common::VoidResult validate() const
Validate the configuration.
std::size_t writer_thread_count
Number of dedicated writer threads.
static logger_config production()
Create a production configuration.
bool enable_batch_writing
Enable batch writing mode.
std::size_t max_file_size
Maximum file size in bytes (default: 100MB).
bool async
Enable asynchronous logging.
std::chrono::milliseconds network_timeout
Network operation timeout.
bool enable_color_output
Enable ANSI color output.
bool enable_timestamp
Include timestamp in log entries.
static logger_config default_config()
Create a default configuration.
overflow_policy queue_overflow_policy
Active overflow policy.
bool enable_source_location
Include source file/line in log entries.
bool enable_compression
Enable log compression.
bool enable_metrics
Enable performance metrics collection.
static logger_config high_performance()
Create a high-performance configuration.
std::string log_directory
Directory for log file output.
std::string remote_host
Remote log collector hostname.
overflow_policy
Policy for handling queue overflow when max_queue_size is reached.
std::chrono::milliseconds flush_interval
Interval between automatic flushes.
std::size_t buffer_size
Internal buffer size in bytes.
uint16_t remote_port
Remote log collector port.
std::size_t max_writers
Maximum number of concurrent writers.
std::size_t max_file_count
Maximum number of rotating log files.
bool enable_crash_handler
Enable crash signal handler.
bool use_lock_free
Use lock-free queue implementation.
std::size_t max_queue_size
Maximum number of queued messages.
bool enable_structured_logging
Enable structured (JSON) log output.
std::string log_file_prefix
Prefix for log file names.
static logger_config debug_config()
Create a debug configuration.