autotoc_md779
doc_id: "LOG-API-003" doc_title: "API Quick Reference" doc_version: "1.0.0" doc_date: "2026-04-05" doc_status: "Released" project: "logger_system"
category: "API"
API Quick Reference
A compact cheat sheet for the most common logger_system APIs. For the full reference see API_REFERENCE.md.
Logger Creation
namespace ci = kcenon::common::interfaces;
auto log = std::make_shared<logger>();
auto log = std::make_shared<logger>(true, 16384);
log->start();
log->stop();
High-performance, thread-safe logging system with asynchronous capabilities.
Logger Builder
log->start();
Builder pattern for logger construction with validation.
logger_builder & with_monitoring(std::shared_ptr< common::interfaces::IMonitor > monitor)
Set monitoring interface (Phase 2.2.4)
logger_builder & with_min_level(log_level level)
logger_builder & with_async(bool async=true)
result< std::unique_ptr< logger > > build()
logger_builder & add_writer(const std::string &name, log_writer_ptr writer)
Add a writer to the logger.
logger_builder & with_buffer_size(std::size_t size)
Set buffer size.
Builder pattern implementation for flexible logger configuration kcenon.
Config Builder
Fluent builder for logger_config.
logger_config_builder & set_buffer_size(std::size_t size)
Set buffer size.
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_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 & set_log_directory(const std::string &directory)
Set log directory.
logger_config_builder & set_max_queue_size(std::size_t size)
Set maximum queue size.
result< logger_config > build() const
Build the logger_config.
logger_config_builder & set_batch_size(std::size_t size)
Set batch size for batch writing.
Fluent builder for logger_config.
Logging Messages
log->log(ci::log_level::info, std::string("message"));
log->log(ci::log_level::warning, std::string("something wrong"));
log->log(ci::log_level::error, std::string("failed"));
if (log->is_enabled(ci::log_level::debug)) { }
log->set_level(ci::log_level::warning);
log->flush();
Log Levels (low to high severity)
| Level | Use for |
trace | Fine-grained debug flow |
debug | Developer diagnostics |
info | Normal operational events |
warning | Recoverable anomalies |
error | Failed operations |
critical | System-wide failures |
fatal | Imminent shutdown |
Writer Builder (Decorator Chain)
#include <kcenon/logger/builders/writer_builder.h>
auto writer = writer_builder()
.file("app.log")
.filtered(std::move(f))
.buffered(500)
.encrypted(std::move(key))
.async(20000)
.build();
Recommended decorator order (innermost to outermost):
Core Writer -> Filtering -> Buffering -> Encryption -> Thread-Safety -> Async
Adding Writers to Logger
log->add_writer(std::move(writer));
log->add_writer("main", std::move(writer));
Starting Async Writers
aw->start();
aw->stop();
}
Asynchronous wrapper for log writers.
Core Writers
| Writer | Construction |
| Console | writer_builder().console().build() |
| File | writer_builder().file("path.log").build() |
| Rotating File | std::make_unique<rotating_file_writer>("path.log", max_bytes, backups) |
| Network | std::make_unique<network_writer>(host, port, protocol) |
| OTLP | std::make_unique<otlp_writer>(endpoint, proto) |
| Critical | std::make_unique<critical_writer>(inner_writer, config) |
| Hybrid | std::make_unique<hybrid_writer>(inner_writer, config, queue_size) |
Structured Logging
log->log_structured(log_level::info)
.message("User login")
.field("user_id", 12345)
.field("ip", "10.0.0.1")
.field("mfa", true)
.emit();
Fluent builder for structured log entries kcenon.
Logger Context (applies to all subsequent logs)
log->context()
.set("service", std::string("order-svc"))
.set("version", std::string("1.2.3"));
log->context().remove("version");
log->context().clear();
RAII Context Scopes (thread-local)
{
{"request_id", std::string("req-123")},
{"tenant", std::string("acme")}
});
}
{
}
RAII guard for structured logging context.
Convenience class for setting a single context field with RAII.
RAII-based context scope management for structured logging kcenon.
Trace Context (distributed tracing)
log->context()
.set("trace_id", std::string("0af765..."), context_category::trace)
.set("span_id", std::string("b7ad6b..."), context_category::trace);
log->context().clear(context_category::trace);
Filters
log->set_filter(std::make_unique<level_filter>(log_level::warning));
log->set_filter(std::make_unique<regex_filter>("sensitive", false));
auto composite = std::make_unique<composite_filter>(composite_filter::logic_type::AND);
composite->add_filter(std::make_unique<level_filter>(log_level::warning));
composite->add_filter(std::make_unique<regex_filter>("ignore", false));
log->set_filter(std::move(composite));
log->set_filter(std::make_unique<function_filter>(
));
log->set_filter(nullptr);
std::string to_string() const
Convert to std::string.
Log filtering functionality.
Represents a single log entry with all associated metadata.
small_string_256 message
The actual log message.
Per-Writer Filtering (via decorator)
auto writer = writer_builder()
.file("errors.log")
.filtered(std::make_unique<level_filter>(log_level::error))
.build();
Formatters
std::string output = json_fmt.
format(entry);
Metrics
log->enable_metrics_collection(true);
auto result = log->get_current_metrics();
m.messages_logged.load();
m.messages_dropped.load();
m.get_messages_per_second();
m.get_queue_utilization_percent();
m.get_avg_enqueue_time_ns();
m.writer_errors.load();
}
Critical Logging
auto critical = std::make_unique<critical_writer>(
std::make_unique<file_writer>("logs/critical.log"),
.force_flush_on_critical = true,
.force_flush_on_error = true,
.write_ahead_log = true,
.wal_path = "logs/.critical.wal",
.sync_on_critical = true
}
);
Synchronous wrapper for critical log messages to prevent loss.
Configuration for critical log writer.
Hybrid Writer (async normal + sync critical)
auto hybrid = std::make_unique<hybrid_writer>(
std::make_unique<file_writer>("logs/app.log"),
.force_flush_on_critical = true,
.force_flush_on_error = true
},
10000
);
Custom Writer
public:
std::string get_name() const override { return "my_writer"; }
protected:
}
}
};
Base class providing automatic thread-safety for writer implementations.
Thread-safe base class for writer implementations kcenon.
Composite Writer (SRP Architecture)
auto writer = make_composite_writer(
std::make_unique<timestamp_formatter>(),
std::make_unique<console_sink>()
);
writer->write(entry);
Composite writer combining formatter and sink (Pipeline Pattern) kcenon.
Console output sink implementation (stdout/stderr) kcenon.
Header Quick Index