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

Fluent builder for logger_config. More...

#include <logger_config_builder.h>

Collaboration diagram for kcenon::logger::logger_config_builder:
Collaboration graph

Public Member Functions

 logger_config_builder ()=default
 Default constructor - starts with default configuration.
 
logger_config_builderuse_default_config ()
 Use default configuration as base.
 
logger_config_builderuse_production_defaults ()
 Use production configuration as base.
 
logger_config_builderuse_debug_defaults ()
 Use debug configuration as base.
 
logger_config_builderuse_high_performance_defaults ()
 Use high-performance configuration as base.
 
logger_config_builderuse_low_latency_defaults ()
 Use low-latency configuration as base.
 
logger_config_builderset_async (bool enabled)
 Set asynchronous logging mode.
 
logger_config_builderset_buffer_size (std::size_t size)
 Set buffer size.
 
logger_config_builderset_min_level (log_level level)
 Set minimum log level.
 
logger_config_builderset_batch_size (std::size_t size)
 Set batch size for batch writing.
 
logger_config_builderset_flush_interval (std::chrono::milliseconds interval)
 Set flush interval.
 
logger_config_builderuse_lock_free (bool enabled)
 Enable/disable lock-free queue.
 
logger_config_builderset_max_writers (std::size_t max)
 Set maximum number of writers.
 
logger_config_builderenable_batch_writing (bool enabled)
 Enable/disable batch writing.
 
logger_config_builderset_writer_thread_count (std::size_t count)
 Set writer thread count.
 
logger_config_builderenable_metrics (bool enabled)
 Enable/disable metrics collection.
 
logger_config_builderenable_crash_handler (bool enabled)
 Enable/disable crash handler.
 
logger_config_builderenable_structured_logging (bool enabled)
 Enable/disable structured logging.
 
logger_config_builderenable_color_output (bool enabled)
 Enable/disable color output.
 
logger_config_builderenable_timestamp (bool enabled)
 Enable/disable timestamp in log messages.
 
logger_config_builderenable_source_location (bool enabled)
 Enable/disable source location in log messages.
 
logger_config_builderenable_compression (bool enabled)
 Enable/disable compression.
 
logger_config_builderset_max_queue_size (std::size_t size)
 Set maximum queue size.
 
logger_config_builderset_overflow_policy (logger_config::overflow_policy policy)
 Set queue overflow policy.
 
logger_config_builderset_max_file_size (std::size_t size)
 Set maximum file size for rotation.
 
logger_config_builderset_max_file_count (std::size_t count)
 Set maximum number of rotated files.
 
logger_config_builderset_log_directory (const std::string &directory)
 Set log directory.
 
logger_config_builderset_log_file_prefix (const std::string &prefix)
 Set log file prefix.
 
logger_config_builderset_remote_logging (const std::string &host, uint16_t port)
 Set remote logging host.
 
logger_config_builderset_network_timeout (std::chrono::milliseconds timeout)
 Set network timeout.
 
logger_config_builderset_network_retry_count (std::size_t count)
 Set network retry count.
 
result< logger_configbuild () const
 Build the logger_config.
 
logger_config build_unchecked () const
 Build the logger_config without validation.
 
logger_config_builderreset ()
 Reset to default configuration.
 

Private Attributes

logger_config config_
 

Detailed Description

Fluent builder for logger_config.

Provides a convenient and type-safe builder pattern for constructing logger_config instances. Supports preset configurations and individual parameter customization.

Example usage:

auto config = logger_config_builder()
.use_production_defaults()
.set_min_level(log_level::warn)
.set_buffer_size(32768)
.enable_metrics(true)
.build();
logger_config_builder()=default
Default constructor - starts with default configuration.
Note
This class is part of Sprint 4: Builder Pattern & Config initiative
Examples
logger_config_builder_example.cpp.

Definition at line 39 of file logger_config_builder.h.

Constructor & Destructor Documentation

◆ logger_config_builder()

kcenon::logger::logger_config_builder::logger_config_builder ( )
default

Default constructor - starts with default configuration.

Member Function Documentation

◆ build()

result< logger_config > kcenon::logger::logger_config_builder::build ( ) const
inline

Build the logger_config.

Returns
result<logger_config> containing the config or validation error

Validates the configuration and returns it if valid.

Examples
logger_config_builder_example.cpp.

Definition at line 381 of file logger_config_builder.h.

381 {
382 auto validation_result = config_.validate();
383 if (!validation_result.is_ok()) {
384 return result<logger_config>{
386 "Configuration validation failed: " + validation_result.error().message};
387 }
388 return result<logger_config>(config_);
389 }
common::VoidResult validate() const
Validate the configuration.

References config_, kcenon::logger::invalid_configuration, and kcenon::logger::logger_config::validate().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_unchecked()

logger_config kcenon::logger::logger_config_builder::build_unchecked ( ) const
inline

Build the logger_config without validation.

Returns
logger_config instance
Warning
Use only if you are certain the configuration is valid

Definition at line 396 of file logger_config_builder.h.

396 {
397 return config_;
398 }

References config_.

◆ enable_batch_writing()

logger_config_builder & kcenon::logger::logger_config_builder::enable_batch_writing ( bool enabled)
inline

Enable/disable batch writing.

Parameters
enabledtrue to enable batch writing
Returns
Reference to builder for chaining

Definition at line 178 of file logger_config_builder.h.

178 {
180 return *this;
181 }
bool enable_batch_writing
Enable batch writing mode.

References config_, and kcenon::logger::logger_config::enable_batch_writing.

◆ enable_color_output()

logger_config_builder & kcenon::logger::logger_config_builder::enable_color_output ( bool enabled)
inline

Enable/disable color output.

Parameters
enabledtrue to enable color output
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 232 of file logger_config_builder.h.

232 {
234 return *this;
235 }
bool enable_color_output
Enable ANSI color output.

References config_, and kcenon::logger::logger_config::enable_color_output.

Referenced by main().

Here is the caller graph for this function:

◆ enable_compression()

logger_config_builder & kcenon::logger::logger_config_builder::enable_compression ( bool enabled)
inline

Enable/disable compression.

Parameters
enabledtrue to enable compression
Returns
Reference to builder for chaining

Definition at line 262 of file logger_config_builder.h.

262 {
263 config_.enable_compression = enabled;
264 return *this;
265 }
bool enable_compression
Enable log compression.

References config_, and kcenon::logger::logger_config::enable_compression.

◆ enable_crash_handler()

logger_config_builder & kcenon::logger::logger_config_builder::enable_crash_handler ( bool enabled)
inline

Enable/disable crash handler.

Parameters
enabledtrue to enable crash handler
Returns
Reference to builder for chaining

Definition at line 212 of file logger_config_builder.h.

212 {
214 return *this;
215 }
bool enable_crash_handler
Enable crash signal handler.

References config_, and kcenon::logger::logger_config::enable_crash_handler.

◆ enable_metrics()

logger_config_builder & kcenon::logger::logger_config_builder::enable_metrics ( bool enabled)
inline

Enable/disable metrics collection.

Parameters
enabledtrue to enable metrics
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 202 of file logger_config_builder.h.

202 {
203 config_.enable_metrics = enabled;
204 return *this;
205 }
bool enable_metrics
Enable performance metrics collection.

References config_, and kcenon::logger::logger_config::enable_metrics.

Referenced by main().

Here is the caller graph for this function:

◆ enable_source_location()

logger_config_builder & kcenon::logger::logger_config_builder::enable_source_location ( bool enabled)
inline

Enable/disable source location in log messages.

Parameters
enabledtrue to enable source location
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 252 of file logger_config_builder.h.

252 {
254 return *this;
255 }
bool enable_source_location
Include source file/line in log entries.

References config_, and kcenon::logger::logger_config::enable_source_location.

Referenced by main().

Here is the caller graph for this function:

◆ enable_structured_logging()

logger_config_builder & kcenon::logger::logger_config_builder::enable_structured_logging ( bool enabled)
inline

Enable/disable structured logging.

Parameters
enabledtrue to enable structured logging
Returns
Reference to builder for chaining

Definition at line 222 of file logger_config_builder.h.

222 {
224 return *this;
225 }
bool enable_structured_logging
Enable structured (JSON) log output.

References config_, and kcenon::logger::logger_config::enable_structured_logging.

◆ enable_timestamp()

logger_config_builder & kcenon::logger::logger_config_builder::enable_timestamp ( bool enabled)
inline

Enable/disable timestamp in log messages.

Parameters
enabledtrue to enable timestamp
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 242 of file logger_config_builder.h.

242 {
243 config_.enable_timestamp = enabled;
244 return *this;
245 }
bool enable_timestamp
Include timestamp in log entries.

References config_, and kcenon::logger::logger_config::enable_timestamp.

Referenced by main().

Here is the caller graph for this function:

◆ reset()

logger_config_builder & kcenon::logger::logger_config_builder::reset ( )
inline

Reset to default configuration.

Returns
Reference to builder for chaining

Definition at line 404 of file logger_config_builder.h.

404 {
405 config_ = logger_config{};
406 return *this;
407 }

References config_.

◆ set_async()

logger_config_builder & kcenon::logger::logger_config_builder::set_async ( bool enabled)
inline

Set asynchronous logging mode.

Parameters
enabledtrue to enable async logging
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 104 of file logger_config_builder.h.

104 {
105 config_.async = enabled;
106 return *this;
107 }
bool async
Enable asynchronous logging.

References kcenon::logger::logger_config::async, and config_.

Referenced by main().

Here is the caller graph for this function:

◆ set_batch_size()

logger_config_builder & kcenon::logger::logger_config_builder::set_batch_size ( std::size_t size)
inline

Set batch size for batch writing.

Parameters
sizeNumber of messages to batch together
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 138 of file logger_config_builder.h.

138 {
140 return *this;
141 }
@ size
Rotate based on file size only.
std::size_t batch_size
Number of messages per batch write.

References kcenon::logger::logger_config::batch_size, config_, and kcenon::logger::size.

Referenced by main().

Here is the caller graph for this function:

◆ set_buffer_size()

logger_config_builder & kcenon::logger::logger_config_builder::set_buffer_size ( std::size_t size)
inline

Set buffer size.

Parameters
sizeBuffer size in bytes
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 114 of file logger_config_builder.h.

114 {
116 return *this;
117 }
std::size_t buffer_size
Internal buffer size in bytes.

References kcenon::logger::logger_config::buffer_size, config_, and kcenon::logger::size.

Referenced by main().

Here is the caller graph for this function:

◆ set_flush_interval()

logger_config_builder & kcenon::logger::logger_config_builder::set_flush_interval ( std::chrono::milliseconds interval)
inline

Set flush interval.

Parameters
intervalTime between automatic flushes
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 148 of file logger_config_builder.h.

148 {
149 config_.flush_interval = interval;
150 return *this;
151 }
std::chrono::milliseconds flush_interval
Interval between automatic flushes.

References config_, and kcenon::logger::logger_config::flush_interval.

Referenced by main().

Here is the caller graph for this function:

◆ set_log_directory()

logger_config_builder & kcenon::logger::logger_config_builder::set_log_directory ( const std::string & directory)
inline

Set log directory.

Parameters
directoryDirectory path for log files
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 320 of file logger_config_builder.h.

320 {
321 config_.log_directory = directory;
322 return *this;
323 }
std::string log_directory
Directory for log file output.

References config_, and kcenon::logger::logger_config::log_directory.

Referenced by main().

Here is the caller graph for this function:

◆ set_log_file_prefix()

logger_config_builder & kcenon::logger::logger_config_builder::set_log_file_prefix ( const std::string & prefix)
inline

Set log file prefix.

Parameters
prefixPrefix for log file names
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 330 of file logger_config_builder.h.

330 {
331 config_.log_file_prefix = prefix;
332 return *this;
333 }
std::string log_file_prefix
Prefix for log file names.

References config_, and kcenon::logger::logger_config::log_file_prefix.

Referenced by main().

Here is the caller graph for this function:

◆ set_max_file_count()

logger_config_builder & kcenon::logger::logger_config_builder::set_max_file_count ( std::size_t count)
inline

Set maximum number of rotated files.

Parameters
countMaximum file count
Returns
Reference to builder for chaining

Definition at line 310 of file logger_config_builder.h.

310 {
311 config_.max_file_count = count;
312 return *this;
313 }
std::size_t max_file_count
Maximum number of rotating log files.

References config_, and kcenon::logger::logger_config::max_file_count.

◆ set_max_file_size()

logger_config_builder & kcenon::logger::logger_config_builder::set_max_file_size ( std::size_t size)
inline

Set maximum file size for rotation.

Parameters
sizeMaximum file size in bytes
Returns
Reference to builder for chaining

Definition at line 300 of file logger_config_builder.h.

300 {
302 return *this;
303 }
std::size_t max_file_size
Maximum file size in bytes (default: 100MB).

References config_, kcenon::logger::logger_config::max_file_size, and kcenon::logger::size.

◆ set_max_queue_size()

logger_config_builder & kcenon::logger::logger_config_builder::set_max_queue_size ( std::size_t size)
inline

Set maximum queue size.

Parameters
sizeMaximum queue size
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 276 of file logger_config_builder.h.

276 {
278 return *this;
279 }
std::size_t max_queue_size
Maximum number of queued messages.

References config_, kcenon::logger::logger_config::max_queue_size, and kcenon::logger::size.

Referenced by main().

Here is the caller graph for this function:

◆ set_max_writers()

logger_config_builder & kcenon::logger::logger_config_builder::set_max_writers ( std::size_t max)
inline

Set maximum number of writers.

Parameters
maxMaximum writers
Returns
Reference to builder for chaining

Definition at line 168 of file logger_config_builder.h.

168 {
169 config_.max_writers = max;
170 return *this;
171 }
std::size_t max_writers
Maximum number of concurrent writers.

References config_, and kcenon::logger::logger_config::max_writers.

◆ set_min_level()

logger_config_builder & kcenon::logger::logger_config_builder::set_min_level ( log_level level)
inline

Set minimum log level.

Parameters
levelMinimum log level to output
Returns
Reference to builder for chaining

Definition at line 124 of file logger_config_builder.h.

124 {
125 config_.min_level = level;
126 return *this;
127 }
log_level min_level
Minimum log level to process.

References config_, and kcenon::logger::logger_config::min_level.

◆ set_network_retry_count()

logger_config_builder & kcenon::logger::logger_config_builder::set_network_retry_count ( std::size_t count)
inline

Set network retry count.

Parameters
countNumber of retries
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 366 of file logger_config_builder.h.

366 {
368 return *this;
369 }
std::size_t network_retry_count
Number of network retry attempts.

References config_, and kcenon::logger::logger_config::network_retry_count.

Referenced by main().

Here is the caller graph for this function:

◆ set_network_timeout()

logger_config_builder & kcenon::logger::logger_config_builder::set_network_timeout ( std::chrono::milliseconds timeout)
inline

Set network timeout.

Parameters
timeoutTimeout duration
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 356 of file logger_config_builder.h.

356 {
357 config_.network_timeout = timeout;
358 return *this;
359 }
std::chrono::milliseconds network_timeout
Network operation timeout.

References config_, and kcenon::logger::logger_config::network_timeout.

Referenced by main().

Here is the caller graph for this function:

◆ set_overflow_policy()

logger_config_builder & kcenon::logger::logger_config_builder::set_overflow_policy ( logger_config::overflow_policy policy)
inline

Set queue overflow policy.

Parameters
policyOverflow policy to use
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 286 of file logger_config_builder.h.

286 {
288 return *this;
289 }
overflow_policy queue_overflow_policy
Active overflow policy.

References config_, and kcenon::logger::logger_config::queue_overflow_policy.

Referenced by main().

Here is the caller graph for this function:

◆ set_remote_logging()

logger_config_builder & kcenon::logger::logger_config_builder::set_remote_logging ( const std::string & host,
uint16_t port )
inline

Set remote logging host.

Parameters
hostRemote host address
portRemote port number
Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 345 of file logger_config_builder.h.

345 {
346 config_.remote_host = host;
347 config_.remote_port = port;
348 return *this;
349 }
std::string remote_host
Remote log collector hostname.
uint16_t remote_port
Remote log collector port.

References config_, kcenon::logger::logger_config::remote_host, and kcenon::logger::logger_config::remote_port.

Referenced by main().

Here is the caller graph for this function:

◆ set_writer_thread_count()

logger_config_builder & kcenon::logger::logger_config_builder::set_writer_thread_count ( std::size_t count)
inline

Set writer thread count.

Parameters
countNumber of writer threads
Returns
Reference to builder for chaining

Definition at line 188 of file logger_config_builder.h.

188 {
190 return *this;
191 }
std::size_t writer_thread_count
Number of dedicated writer threads.

References config_, and kcenon::logger::logger_config::writer_thread_count.

◆ use_debug_defaults()

logger_config_builder & kcenon::logger::logger_config_builder::use_debug_defaults ( )
inline

Use debug configuration as base.

Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 72 of file logger_config_builder.h.

72 {
74 return *this;
75 }
static logger_config debug_config()
Create a debug configuration.

References config_, and kcenon::logger::logger_config::debug_config().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ use_default_config()

logger_config_builder & kcenon::logger::logger_config_builder::use_default_config ( )
inline

Use default configuration as base.

Returns
Reference to builder for chaining

Definition at line 54 of file logger_config_builder.h.

54 {
56 return *this;
57 }
static logger_config default_config()
Create a default configuration.

References config_, and kcenon::logger::logger_config::default_config().

Here is the call graph for this function:

◆ use_high_performance_defaults()

logger_config_builder & kcenon::logger::logger_config_builder::use_high_performance_defaults ( )
inline

Use high-performance configuration as base.

Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 81 of file logger_config_builder.h.

81 {
83 return *this;
84 }
static logger_config high_performance()
Create a high-performance configuration.

References config_, and kcenon::logger::logger_config::high_performance().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ use_lock_free()

logger_config_builder & kcenon::logger::logger_config_builder::use_lock_free ( bool enabled)
inline

Enable/disable lock-free queue.

Parameters
enabledtrue to use lock-free queue
Returns
Reference to builder for chaining

Definition at line 158 of file logger_config_builder.h.

158 {
159 config_.use_lock_free = enabled;
160 return *this;
161 }
bool use_lock_free
Use lock-free queue implementation.

References config_, and kcenon::logger::logger_config::use_lock_free.

◆ use_low_latency_defaults()

logger_config_builder & kcenon::logger::logger_config_builder::use_low_latency_defaults ( )
inline

Use low-latency configuration as base.

Returns
Reference to builder for chaining

Definition at line 90 of file logger_config_builder.h.

90 {
92 return *this;
93 }
static logger_config low_latency()
Create a low-latency configuration.

References config_, and kcenon::logger::logger_config::low_latency().

Here is the call graph for this function:

◆ use_production_defaults()

logger_config_builder & kcenon::logger::logger_config_builder::use_production_defaults ( )
inline

Use production configuration as base.

Returns
Reference to builder for chaining
Examples
logger_config_builder_example.cpp.

Definition at line 63 of file logger_config_builder.h.

63 {
65 return *this;
66 }
static logger_config production()
Create a production configuration.

References config_, and kcenon::logger::logger_config::production().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ config_


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