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

Asynchronous log collector for high-performance logging. More...

#include <log_collector.h>

Collaboration diagram for kcenon::logger::log_collector:
Collaboration graph

Classes

class  impl
 

Public Member Functions

 log_collector (std::size_t buffer_size=8192, std::size_t batch_size=100)
 Constructor.
 
 ~log_collector ()
 Destructor.
 
bool enqueue (common::interfaces::log_level level, const std::string &message, const std::string &file, int line, const std::string &function, const std::chrono::system_clock::time_point &timestamp)
 Enqueue a log entry.
 
void add_writer (std::shared_ptr< log_writer_interface > writer)
 Add a writer.
 
void clear_writers ()
 Clear all writers.
 
void start ()
 Start the background processing thread.
 
void stop ()
 Stop the background processing thread.
 
void flush ()
 Flush all pending log entries.
 
std::pair< size_t, size_t > get_queue_metrics () const
 Get queue metrics.
 

Private Attributes

std::unique_ptr< implpimpl_
 

Detailed Description

Asynchronous log collector for high-performance logging.

Collects log entries in a queue (mutex/condition-variable backed) and processes them in a background thread to minimize logging overhead.

Definition at line 34 of file log_collector.h.

Constructor & Destructor Documentation

◆ log_collector()

kcenon::logger::log_collector::log_collector ( std::size_t buffer_size = 8192,
std::size_t batch_size = 100 )
explicit

Constructor.

Parameters
buffer_sizeSize of the log buffer (max queued entries)
batch_sizeNumber of entries to process in each batch (default: 100) Higher values improve throughput but increase latency Lower values reduce latency but may decrease throughput

Definition at line 421 of file log_collector.cpp.

422 : pimpl_(std::make_unique<impl>(buffer_size, batch_size)) {
423}
std::unique_ptr< impl > pimpl_

◆ ~log_collector()

kcenon::logger::log_collector::~log_collector ( )
default

Destructor.

Member Function Documentation

◆ add_writer()

void kcenon::logger::log_collector::add_writer ( std::shared_ptr< log_writer_interface > writer)

Add a writer.

Parameters
writerShared pointer to writer

The collector stores a weak reference to prevent circular dependencies and ensure safe access even if the writer is destroyed.

Definition at line 436 of file log_collector.cpp.

436 {
437 pimpl_->add_writer(writer);
438}

References pimpl_.

◆ clear_writers()

void kcenon::logger::log_collector::clear_writers ( )

Clear all writers.

Definition at line 440 of file log_collector.cpp.

440 {
441 pimpl_->clear_writers();
442}

References pimpl_.

◆ enqueue()

bool kcenon::logger::log_collector::enqueue ( common::interfaces::log_level level,
const std::string & message,
const std::string & file,
int line,
const std::string & function,
const std::chrono::system_clock::time_point & timestamp )

Enqueue a log entry.

Parameters
levelLog level
messageLog message
fileSource file
lineSource line
functionFunction name
timestampLog timestamp

Definition at line 427 of file log_collector.cpp.

432 {
433 return pimpl_->enqueue(level, message, file, line, function, timestamp);
434}

References pimpl_.

◆ flush()

void kcenon::logger::log_collector::flush ( )

Flush all pending log entries.

Definition at line 452 of file log_collector.cpp.

452 {
453 pimpl_->flush();
454}

References pimpl_.

◆ get_queue_metrics()

std::pair< std::size_t, std::size_t > kcenon::logger::log_collector::get_queue_metrics ( ) const

Get queue metrics.

Returns
Pair of (current_size, max_capacity)

Definition at line 456 of file log_collector.cpp.

456 {
457 return pimpl_->get_queue_metrics();
458}

References pimpl_.

◆ start()

void kcenon::logger::log_collector::start ( )

Start the background processing thread.

Definition at line 444 of file log_collector.cpp.

444 {
445 pimpl_->start();
446}

References pimpl_.

◆ stop()

void kcenon::logger::log_collector::stop ( )

Stop the background processing thread.

Definition at line 448 of file log_collector.cpp.

448 {
449 pimpl_->stop();
450}

References pimpl_.

Member Data Documentation

◆ pimpl_

std::unique_ptr<impl> kcenon::logger::log_collector::pimpl_
private

Definition at line 103 of file log_collector.h.

Referenced by add_writer(), clear_writers(), enqueue(), flush(), get_queue_metrics(), start(), and stop().


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