|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
OTLP log exporter for OpenTelemetry integration. More...
#include <otlp_writer.h>


Classes | |
| struct | config |
| Configuration for OTLP writer. More... | |
| struct | export_stats |
| Statistics snapshot for OTLP export (copyable) More... | |
| struct | internal_stats |
| Internal atomic statistics (non-copyable) More... | |
Public Types | |
| enum class | protocol_type { http , grpc } |
| Transport protocol for OTLP export. More... | |
Public Member Functions | |
| otlp_writer (const config &cfg) | |
| Constructor with configuration. | |
| ~otlp_writer () override | |
| Destructor - flushes remaining logs. | |
| otlp_writer (const otlp_writer &)=delete | |
| otlp_writer & | operator= (const otlp_writer &)=delete |
| otlp_writer (otlp_writer &&)=delete | |
| otlp_writer & | operator= (otlp_writer &&)=delete |
| common::VoidResult | write (const log_entry &entry) override |
| Write a log entry with OTEL context. | |
| common::VoidResult | flush () override |
| Flush pending logs. | |
| std::string | get_name () const override |
| Get writer name. | |
| bool | is_healthy () const override |
| Check if writer is healthy. | |
| export_stats | get_stats () const |
| Get export statistics. | |
| void | force_export () |
| Force immediate export of current batch. | |
Public Member Functions inherited from kcenon::logger::base_writer | |
| base_writer (std::unique_ptr< log_formatter_interface > formatter=nullptr) | |
| Constructor with optional formatter. | |
| virtual | ~base_writer ()=default |
| virtual void | set_use_color (bool use_color) |
| Set whether to use color output (if supported) | |
| bool | use_color () const |
| Get current color output setting. | |
| log_formatter_interface * | get_formatter () const |
| Get the current formatter. | |
Public Member Functions inherited from kcenon::logger::log_writer_interface | |
| virtual | ~log_writer_interface ()=default |
| virtual common::VoidResult | close () |
| Close the writer and release resources. | |
| virtual auto | is_open () const -> bool |
| Check if writer is open and ready. | |
Private Member Functions | |
| void | export_thread_func () |
| bool | export_batch (const std::vector< log_entry > &batch) |
| bool | export_with_http (const std::vector< log_entry > &batch) |
Static Private Member Functions | |
| static int | to_otlp_severity (common::interfaces::log_level level) |
| static std::string | escape_json (const std::string &str) |
Private Attributes | |
| config | config_ |
| internal_stats | stats_ |
| std::queue< log_entry > | queue_ |
| std::mutex | queue_mutex_ |
| std::condition_variable | queue_cv_ |
| std::unique_ptr< std::thread > | export_thread_ |
| std::atomic< bool > | running_ {false} |
| std::atomic< bool > | healthy_ {true} |
Additional Inherited Members | |
Static Public Attributes inherited from kcenon::logger::async_writer_tag | |
| static constexpr writer_category | category = writer_category::asynchronous |
Protected Member Functions inherited from kcenon::logger::base_writer | |
| std::string | format_log_entry (const log_entry &entry) const |
| Format a log entry using the current formatter. | |
OTLP log exporter for OpenTelemetry integration.
Exports log records to OpenTelemetry collectors using the OTLP protocol. Supports:
Category: Asynchronous (batched network export with background thread)
Definition at line 74 of file otlp_writer.h.
|
strong |
Transport protocol for OTLP export.
| Enumerator | |
|---|---|
| http | OTLP/HTTP (port 4318 by default) |
| grpc | OTLP/gRPC (port 4317 by default) |
Definition at line 80 of file otlp_writer.h.
|
explicit |
Constructor with configuration.
| cfg | Configuration for OTLP export |
Definition at line 113 of file otlp_writer.cpp.
References export_thread_, export_thread_func(), and running_.

|
override |
Destructor - flushes remaining logs.
Definition at line 127 of file otlp_writer.cpp.
References export_batch(), export_thread_, queue_, queue_cv_, queue_mutex_, and running_.

|
delete |
|
delete |
|
staticprivate |
Definition at line 457 of file otlp_writer.cpp.
Referenced by export_with_http().

|
private |
Definition at line 262 of file otlp_writer.cpp.
References config_, kcenon::logger::otlp_writer::internal_stats::export_failures, kcenon::logger::otlp_writer::internal_stats::export_success, export_with_http(), healthy_, kcenon::logger::otlp_writer::internal_stats::last_error, kcenon::logger::otlp_writer::internal_stats::last_export, kcenon::logger::otlp_writer::internal_stats::logs_dropped, kcenon::logger::otlp_writer::internal_stats::logs_exported, kcenon::logger::otlp_writer::config::max_retries, kcenon::logger::otlp_writer::internal_stats::retries, kcenon::logger::otlp_writer::config::retry_delay, stats_, and kcenon::logger::success.
Referenced by export_thread_func(), force_export(), and ~otlp_writer().


|
private |
Definition at line 231 of file otlp_writer.cpp.
References config_, export_batch(), kcenon::logger::otlp_writer::config::flush_interval, kcenon::logger::otlp_writer::config::max_batch_size, queue_, queue_cv_, queue_mutex_, and running_.
Referenced by otlp_writer().


|
private |
Definition at line 376 of file otlp_writer.cpp.
References config_, escape_json(), kcenon::logger::json, kcenon::logger::otlp_writer::config::service_name, and to_otlp_severity().
Referenced by export_batch().


|
overridevirtual |
Flush pending logs.
Implements kcenon::logger::base_writer.
Definition at line 194 of file otlp_writer.cpp.
References force_export(), and kcenon::common::ok().

| void kcenon::logger::otlp_writer::force_export | ( | ) |
Force immediate export of current batch.
Definition at line 215 of file otlp_writer.cpp.
References export_batch(), queue_, and queue_mutex_.
Referenced by flush().


|
inlineoverridevirtual |
Get writer name.
Implements kcenon::logger::base_writer.
Definition at line 230 of file otlp_writer.h.
| otlp_writer::export_stats kcenon::logger::otlp_writer::get_stats | ( | ) | const |
Get export statistics.
Definition at line 203 of file otlp_writer.cpp.
References kcenon::logger::otlp_writer::internal_stats::export_failures, kcenon::logger::otlp_writer::internal_stats::export_success, kcenon::logger::otlp_writer::internal_stats::last_error, kcenon::logger::otlp_writer::internal_stats::last_export, kcenon::logger::otlp_writer::internal_stats::logs_dropped, kcenon::logger::otlp_writer::internal_stats::logs_exported, kcenon::logger::otlp_writer::internal_stats::retries, and stats_.
|
overridevirtual |
Check if writer is healthy.
Reimplemented from kcenon::logger::base_writer.
Definition at line 199 of file otlp_writer.cpp.
References healthy_.
|
delete |
|
delete |
|
staticprivate |
Definition at line 298 of file otlp_writer.cpp.
Referenced by export_with_http().

|
overridevirtual |
Write a log entry with OTEL context.
| entry | The log entry to write |
Implements kcenon::logger::base_writer.
Definition at line 157 of file otlp_writer.cpp.
References config_, kcenon::logger::otlp::otel_context_storage::get(), kcenon::logger::log_entry::level, kcenon::logger::log_entry::location, kcenon::logger::otlp_writer::internal_stats::logs_dropped, kcenon::logger::otlp_writer::config::max_batch_size, kcenon::logger::otlp_writer::config::max_queue_size, kcenon::logger::log_entry::message, kcenon::common::ok(), kcenon::logger::log_entry::otel_ctx, queue_, queue_cv_, queue_mutex_, stats_, kcenon::logger::log_entry::timestamp, and kcenon::logger::small_string< SSO_SIZE >::to_string().

|
private |
Definition at line 269 of file otlp_writer.h.
Referenced by export_batch(), export_thread_func(), export_with_http(), and write().
|
private |
Definition at line 278 of file otlp_writer.h.
Referenced by otlp_writer(), and ~otlp_writer().
|
private |
Definition at line 280 of file otlp_writer.h.
Referenced by export_batch(), and is_healthy().
|
private |
Definition at line 273 of file otlp_writer.h.
Referenced by export_thread_func(), force_export(), write(), and ~otlp_writer().
|
private |
Definition at line 275 of file otlp_writer.h.
Referenced by export_thread_func(), write(), and ~otlp_writer().
|
mutableprivate |
Definition at line 274 of file otlp_writer.h.
Referenced by export_thread_func(), force_export(), write(), and ~otlp_writer().
|
private |
Definition at line 279 of file otlp_writer.h.
Referenced by export_thread_func(), otlp_writer(), and ~otlp_writer().
|
private |
Definition at line 270 of file otlp_writer.h.
Referenced by export_batch(), get_stats(), and write().