28#include <kcenon/common/interfaces/logger_interface.h>
36using log_level = common::interfaces::log_level;
75 if (context_fields && !context_fields->empty()) {
76 fields_ = *context_fields;
108 fields_[key] = std::string(value);
119 fields_[key] =
static_cast<int64_t
>(value);
Fluent builder for creating structured log entries.
structured_log_builder & field(const std::string &key, const std::string &value)
Add a string field.
structured_log_builder & field(const std::string &key, const log_value &value)
Add a log_value field.
~structured_log_builder()=default
Destructor - does NOT auto-emit.
structured_log_builder & field(const std::string &key, bool value)
Add a boolean field.
void emit()
Emit the log entry.
structured_log_builder & field(const std::string &key, int64_t value)
Add a long integer field.
structured_log_builder & operator=(const structured_log_builder &)=delete
structured_log_builder & field(const std::string &key, const char *value)
Add a C-string field.
structured_log_builder(log_level level, emit_callback callback, const log_fields *context_fields=nullptr)
Constructor.
structured_log_builder & field(const std::string &key, double value)
Add a double field.
structured_log_builder(const structured_log_builder &)=delete
structured_log_builder & field(const std::string &key, int value)
Add an integer field.
std::function< void(log_entry &&)> emit_callback
Callback type for emitting structured log entries.
structured_log_builder & category(const std::string &cat)
Set the category for the log entry.
structured_log_builder & message(const std::string &msg)
Set the log message.
structured_log_builder(structured_log_builder &&) noexcept=default
Data structures for representing log entries and source locations kcenon.
common::interfaces::log_level log_level
std::unordered_map< std::string, log_value > log_fields
Type alias for structured fields map.
small_string< 128 > small_string_128
std::variant< std::string, int64_t, double, bool > log_value
Value type for structured logging fields.
Represents a single log entry with all associated metadata.
std::optional< log_fields > fields
Optional structured fields for key-value logging.
std::optional< small_string_128 > category
Optional category for log filtering and routing.