LogIt++
Header-only, macro-first C++ logging library
Loading...
Searching...
No Matches
logit::PrometheusHttpServerLogger Class Referencefinal

Serves Prometheus metrics via an embedded HTTP server. More...

#include <PrometheusHttpServerLogger.hpp>

Inheritance diagram for logit::PrometheusHttpServerLogger:
logit::ILogger

Classes

struct  Config
 

Public Types

using HttpServer = SimpleWeb::Server<SimpleWeb::HTTP>
 

Public Member Functions

 PrometheusHttpServerLogger ()
 Constructs Prometheus HTTP server logger with default configuration.
 
 PrometheusHttpServerLogger (const Config &config)
 Constructs Prometheus HTTP server logger with custom configuration.
 
 ~PrometheusHttpServerLogger () override
 
 PrometheusHttpServerLogger (const PrometheusHttpServerLogger &)=delete
 
PrometheusHttpServerLogger & operator= (const PrometheusHttpServerLogger &)=delete
 
void start ()
 Starts the HTTP server thread.
 
void log (const LogRecord &record, const std::string &message) override
 Updates internal metric counters for a log message.
 
void wait () override
 No-op; server is independently serving metrics.
 
void shutdown () override
 Stops the HTTP server and joins the server thread.
 
std::string collect_payload ()
 Collects current metrics and returns serialized Prometheus text payload.
 
std::string get_string_param (const LoggerParam &param) const override
 Retrieves a string parameter from the logger.
 
int64_t get_int_param (const LoggerParam &param) const override
 Retrieves an integer parameter from the logger.
 
double get_float_param (const LoggerParam &param) const override
 Retrieves a floating-point parameter from the logger.
 
void set_log_level (LogLevel level) override
 Sets minimal log level for this logger.
 
LogLevel get_log_level () const override
 Gets minimal log level for this logger.
 
uint64_t dropped_count () const
 Returns number of dropped records.
 
uint64_t failed_export_count () const
 Returns number of failed export attempts.
 
- Public Member Functions inherited from logit::ILogger
virtual ~ILogger ()=default
 
virtual std::vector< std::string > get_buffered_strings () const
 Returns buffered formatted messages in chronological order.
 
virtual std::vector< BufferedLogEntry > get_buffered_entries () const
 Returns buffered structured entries in chronological order.
 
virtual std::vector< LogFileInfo > list_log_files () const
 Lists persisted log files owned by this backend.
 
virtual LogFileReadResult read_log_file (const std::string &path) const
 Reads one persisted log file owned by this backend.
 
virtual std::vector< LogFileReadResult > read_log_files (const std::vector< std::string > &paths) const
 Reads several persisted log files owned by this backend.
 
virtual LogClearResult clear_logs (const LogClearOptions &options=LogClearOptions())
 Clears logger-owned buffered or persisted records when supported.
 

Private Member Functions

void build_scrape_metrics (std::vector< PrometheusMetricFamily > &families) const
 
void add_scrape_labels (PrometheusSample &sample) const
 
void stop ()
 

Private Attributes

Config m_config
 
HttpServer m_server
 
std::thread m_server_thread
 
std::mutex m_collect_mutex
 
std::atomic< bool > m_running = ATOMIC_VAR_INIT(false)
 
PrometheusLoggerMetrics m_metrics
 
std::atomic< int > m_log_level = ATOMIC_VAR_INIT(static_cast<int>(LogLevel::LOG_LVL_TRACE))
 
std::atomic< uint64_t > m_scrapes_total {0}
 
std::atomic< uint64_t > m_scrape_errors_total {0}
 
std::atomic< int64_t > m_last_scrape_timestamp_ms {0}
 
std::atomic< double > m_last_collect_duration_sec {0.0}
 

Detailed Description

Serves Prometheus metrics via an embedded HTTP server.

This backend starts a Simple-Web-Server HTTP server and serves Prometheus text exposition format on the configured path (default: /metrics). It tracks the same internal counters and gauges as PrometheusPayloadLogger.

Definition at line 36 of file PrometheusHttpServerLogger.hpp.

Member Typedef Documentation

◆ HttpServer

using logit::PrometheusHttpServerLogger::HttpServer = SimpleWeb::Server<SimpleWeb::HTTP>

Definition at line 38 of file PrometheusHttpServerLogger.hpp.

Constructor & Destructor Documentation

◆ PrometheusHttpServerLogger() [1/3]

logit::PrometheusHttpServerLogger::PrometheusHttpServerLogger ( )
inline

Constructs Prometheus HTTP server logger with default configuration.

Definition at line 52 of file PrometheusHttpServerLogger.hpp.

◆ PrometheusHttpServerLogger() [2/3]

logit::PrometheusHttpServerLogger::PrometheusHttpServerLogger ( const Config & config)
inlineexplicit

Constructs Prometheus HTTP server logger with custom configuration.

Parameters
configServer and format configuration.

Definition at line 56 of file PrometheusHttpServerLogger.hpp.

◆ ~PrometheusHttpServerLogger()

logit::PrometheusHttpServerLogger::~PrometheusHttpServerLogger ( )
inlineoverride

Definition at line 104 of file PrometheusHttpServerLogger.hpp.

◆ PrometheusHttpServerLogger() [3/3]

logit::PrometheusHttpServerLogger::PrometheusHttpServerLogger ( const PrometheusHttpServerLogger & )
delete

Member Function Documentation

◆ add_scrape_labels()

void logit::PrometheusHttpServerLogger::add_scrape_labels ( PrometheusSample & sample) const
inlineprivate

Definition at line 309 of file PrometheusHttpServerLogger.hpp.

◆ build_scrape_metrics()

void logit::PrometheusHttpServerLogger::build_scrape_metrics ( std::vector< PrometheusMetricFamily > & families) const
inlineprivate

Definition at line 249 of file PrometheusHttpServerLogger.hpp.

◆ collect_payload()

std::string logit::PrometheusHttpServerLogger::collect_payload ( )
inline

Collects current metrics and returns serialized Prometheus text payload.

Returns
Complete Prometheus text exposition format string.

Definition at line 140 of file PrometheusHttpServerLogger.hpp.

◆ dropped_count()

uint64_t logit::PrometheusHttpServerLogger::dropped_count ( ) const
inline

Returns number of dropped records.

Definition at line 225 of file PrometheusHttpServerLogger.hpp.

◆ failed_export_count()

uint64_t logit::PrometheusHttpServerLogger::failed_export_count ( ) const
inline

Returns number of failed export attempts.

Definition at line 230 of file PrometheusHttpServerLogger.hpp.

◆ get_float_param()

double logit::PrometheusHttpServerLogger::get_float_param ( const LoggerParam & param) const
inlineoverridevirtual

Retrieves a floating-point parameter from the logger.

Parameters
paramParameter to retrieve.
Returns
Parameter value in seconds for time params, or 0.0 when unsupported.

Implements logit::ILogger.

Definition at line 196 of file PrometheusHttpServerLogger.hpp.

◆ get_int_param()

int64_t logit::PrometheusHttpServerLogger::get_int_param ( const LoggerParam & param) const
inlineoverridevirtual

Retrieves an integer parameter from the logger.

Parameters
paramParameter to retrieve.
Returns
Parameter value, or 0 when unsupported.

Implements logit::ILogger.

Definition at line 181 of file PrometheusHttpServerLogger.hpp.

◆ get_log_level()

LogLevel logit::PrometheusHttpServerLogger::get_log_level ( ) const
inlineoverridevirtual

Gets minimal log level for this logger.

Returns
Current minimal log level.

Implements logit::ILogger.

Definition at line 220 of file PrometheusHttpServerLogger.hpp.

◆ get_string_param()

std::string logit::PrometheusHttpServerLogger::get_string_param ( const LoggerParam & param) const
inlineoverridevirtual

Retrieves a string parameter from the logger.

Parameters
paramParameter to retrieve.
Returns
Parameter value, or empty string when unsupported.

Implements logit::ILogger.

Definition at line 166 of file PrometheusHttpServerLogger.hpp.

◆ log()

void logit::PrometheusHttpServerLogger::log ( const LogRecord & record,
const std::string & message )
inlineoverridevirtual

Updates internal metric counters for a log message.

Parameters
recordStructured log record.
messageFormatted log message (unused by Prometheus metrics).

Implements logit::ILogger.

Definition at line 125 of file PrometheusHttpServerLogger.hpp.

◆ operator=()

PrometheusHttpServerLogger & logit::PrometheusHttpServerLogger::operator= ( const PrometheusHttpServerLogger & )
delete

◆ set_log_level()

void logit::PrometheusHttpServerLogger::set_log_level ( LogLevel level)
inlineoverridevirtual

Sets minimal log level for this logger.

Parameters
levelMinimum log level.

Implements logit::ILogger.

Definition at line 214 of file PrometheusHttpServerLogger.hpp.

◆ shutdown()

void logit::PrometheusHttpServerLogger::shutdown ( )
inlineoverridevirtual

Stops the HTTP server and joins the server thread.

Implements logit::ILogger.

Definition at line 134 of file PrometheusHttpServerLogger.hpp.

◆ start()

void logit::PrometheusHttpServerLogger::start ( )
inline

Starts the HTTP server thread.

Definition at line 112 of file PrometheusHttpServerLogger.hpp.

◆ stop()

void logit::PrometheusHttpServerLogger::stop ( )
inlineprivate

Definition at line 322 of file PrometheusHttpServerLogger.hpp.

◆ wait()

void logit::PrometheusHttpServerLogger::wait ( )
inlineoverridevirtual

No-op; server is independently serving metrics.

Implements logit::ILogger.

Definition at line 131 of file PrometheusHttpServerLogger.hpp.

Member Data Documentation

◆ m_collect_mutex

std::mutex logit::PrometheusHttpServerLogger::m_collect_mutex
private

Definition at line 238 of file PrometheusHttpServerLogger.hpp.

◆ m_config

Config logit::PrometheusHttpServerLogger::m_config
private

Definition at line 235 of file PrometheusHttpServerLogger.hpp.

◆ m_last_collect_duration_sec

std::atomic<double> logit::PrometheusHttpServerLogger::m_last_collect_duration_sec {0.0}
private

Definition at line 247 of file PrometheusHttpServerLogger.hpp.

◆ m_last_scrape_timestamp_ms

std::atomic<int64_t> logit::PrometheusHttpServerLogger::m_last_scrape_timestamp_ms {0}
private

Definition at line 246 of file PrometheusHttpServerLogger.hpp.

◆ m_log_level

std::atomic<int> logit::PrometheusHttpServerLogger::m_log_level = ATOMIC_VAR_INIT(static_cast<int>(LogLevel::LOG_LVL_TRACE))
private

Definition at line 242 of file PrometheusHttpServerLogger.hpp.

◆ m_metrics

PrometheusLoggerMetrics logit::PrometheusHttpServerLogger::m_metrics
private

Definition at line 240 of file PrometheusHttpServerLogger.hpp.

◆ m_running

std::atomic<bool> logit::PrometheusHttpServerLogger::m_running = ATOMIC_VAR_INIT(false)
private

Definition at line 239 of file PrometheusHttpServerLogger.hpp.

◆ m_scrape_errors_total

std::atomic<uint64_t> logit::PrometheusHttpServerLogger::m_scrape_errors_total {0}
private

Definition at line 245 of file PrometheusHttpServerLogger.hpp.

◆ m_scrapes_total

std::atomic<uint64_t> logit::PrometheusHttpServerLogger::m_scrapes_total {0}
private

Definition at line 244 of file PrometheusHttpServerLogger.hpp.

◆ m_server

HttpServer logit::PrometheusHttpServerLogger::m_server
private

Definition at line 236 of file PrometheusHttpServerLogger.hpp.

◆ m_server_thread

std::thread logit::PrometheusHttpServerLogger::m_server_thread
private

Definition at line 237 of file PrometheusHttpServerLogger.hpp.


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