Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
logger_config_builder_example.cpp

This example demonstrates the logger_config_builder fluent API:

// BSD 3-Clause License
// Copyright (c) 2025, 🍀☀🌕🌥 🌊
// See the LICENSE file in the project root for full license information.
#include <iostream>
using namespace kcenon::logger;
int main() {
// Example 1: Use production defaults with custom settings
auto config1_result = logger_config_builder()
.set_log_directory("./production_logs")
.build();
if (config1_result.is_ok()) {
std::cout << "Production config created successfully" << std::endl;
std::cout << " Buffer size: " << config1_result.value().buffer_size << std::endl;
std::cout << " Log directory: " << config1_result.value().log_directory << std::endl;
}
// Example 2: Debug configuration
auto config2_result = logger_config_builder()
.build();
if (config2_result.is_ok()) {
std::cout << "\nDebug config created successfully" << std::endl;
std::cout << " Async: " << config2_result.value().async << std::endl;
std::cout << " Source location: " << config2_result.value().enable_source_location << std::endl;
}
// Example 3: Custom configuration from scratch
auto config3_result = logger_config_builder()
.set_async(true)
.set_flush_interval(std::chrono::milliseconds(500))
.set_overflow_policy(logger_config::overflow_policy::drop_oldest)
.set_log_directory("./custom_logs")
.build();
if (config3_result.is_ok()) {
std::cout << "\nCustom config created successfully" << std::endl;
std::cout << " Buffer size: " << config3_result.value().buffer_size << std::endl;
std::cout << " Batch size: " << config3_result.value().batch_size << std::endl;
std::cout << " Max queue size: " << config3_result.value().max_queue_size << std::endl;
}
// Example 4: High-performance with network logging
auto config4_result = logger_config_builder()
.set_remote_logging("log-server.example.com", 5140)
.set_network_timeout(std::chrono::milliseconds(3000))
.build();
if (config4_result.is_ok()) {
std::cout << "\nHigh-performance network config created successfully" << std::endl;
std::cout << " Remote host: " << config4_result.value().remote_host << std::endl;
std::cout << " Remote port: " << config4_result.value().remote_port << std::endl;
}
// Example 5: Invalid configuration (will fail validation)
auto config5_result = logger_config_builder()
.set_buffer_size(0) // Invalid: buffer size must be > 0
.build();
if (!config5_result.is_ok()) {
std::cout << "\nValidation failed as expected:" << std::endl;
std::cout << " Error: " << config5_result.error().message << std::endl;
}
return 0;
}
int main()
Fluent builder for logger_config.
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_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 & use_debug_defaults()
Use debug configuration as base.
logger_config_builder & set_network_timeout(std::chrono::milliseconds timeout)
Set network timeout.
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_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 & 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_batch_size(std::size_t size)
Set batch size for batch writing.
logger_config_builder & enable_color_output(bool enabled)
Enable/disable color output.
Fluent builder for logger_config.