unilink  0.4.3
A simple C++ library for unified async communication
unilink::diagnostics::Logger::Impl Struct Reference

Classes

struct  FormatPart
 
struct  LogFormat
 
struct  TimestampBuffer
 

Public Member Functions

 Impl ()
 
 ~Impl ()
 
void parse_format (const std::string &format)
 
void flush ()
 
std::string format_message (std::chrono::system_clock::time_point timestamp_val, LogLevel level, std::string_view component, std::string_view operation, std::string_view message)
 
void write_to_sinks (LogLevel level, const std::string &formatted_message)
 
std::string_view level_to_string (LogLevel level) const
 
TimestampBuffer get_timestamp (std::chrono::system_clock::time_point timestamp) const
 
void write_to_console (const std::string &message) const
 
void write_to_file (const std::string &message)
 
void call_callback (LogLevel level, const std::string &message)
 
void check_and_rotate_log ()
 
void open_log_file (const std::string &filename)
 
void setup_async_logging (const AsyncLogConfig &config)
 
void teardown_async_logging ()
 
void worker_loop ()
 
void process_batch (const std::vector< LogEntry > &batch)
 
bool should_drop_log () const
 
size_t get_queue_size () const
 
void update_stats_on_enqueue ()
 
void update_stats_on_drop ()
 
void update_stats_on_batch (size_t)
 
void update_stats_on_flush ()
 

Public Attributes

std::mutex mutex_
 
std::atomic< LogLevelcurrent_level_ {LogLevel::INFO}
 
std::atomic< bool > enabled_ {true}
 
std::atomic< int > outputs_ {static_cast<int>(LogOutput::CONSOLE)}
 
std::shared_ptr< LogFormatlog_format_
 
std::unique_ptr< std::ofstream > file_output_
 
LogCallback callback_
 
std::unique_ptr< LogRotationlog_rotation_
 
std::string current_log_file_
 
std::atomic< bool > async_enabled_ {false}
 
AsyncLogConfig async_config_
 
AsyncLogStats async_stats_
 
std::thread worker_thread_
 
std::atomic< bool > running_ {false}
 
std::atomic< bool > shutdown_requested_ {false}
 
std::queue< LogEntrylog_queue_
 
std::mutex queue_mutex_
 
std::condition_variable queue_cv_
 
std::mutex stats_mutex_
 

Detailed Description

Definition at line 36 of file logger.cc.

Constructor & Destructor Documentation

◆ Impl()

unilink::diagnostics::Logger::Impl::Impl ( )
inline

Definition at line 84 of file logger.cc.

◆ ~Impl()

unilink::diagnostics::Logger::Impl::~Impl ( )
inline

Definition at line 86 of file logger.cc.

Member Function Documentation

◆ call_callback()

void unilink::diagnostics::Logger::Impl::call_callback ( LogLevel  level,
const std::string &  message 
)
inline

Definition at line 304 of file logger.cc.

◆ check_and_rotate_log()

void unilink::diagnostics::Logger::Impl::check_and_rotate_log ( )
inline

Definition at line 316 of file logger.cc.

◆ flush()

void unilink::diagnostics::Logger::Impl::flush ( )
inline

Definition at line 169 of file logger.cc.

◆ format_message()

std::string unilink::diagnostics::Logger::Impl::format_message ( std::chrono::system_clock::time_point  timestamp_val,
LogLevel  level,
std::string_view  component,
std::string_view  operation,
std::string_view  message 
)
inline

Definition at line 178 of file logger.cc.

◆ get_queue_size()

size_t unilink::diagnostics::Logger::Impl::get_queue_size ( ) const
inline

Definition at line 465 of file logger.cc.

◆ get_timestamp()

TimestampBuffer unilink::diagnostics::Logger::Impl::get_timestamp ( std::chrono::system_clock::time_point  timestamp) const
inline

Definition at line 254 of file logger.cc.

◆ level_to_string()

std::string_view unilink::diagnostics::Logger::Impl::level_to_string ( LogLevel  level) const
inline

Definition at line 238 of file logger.cc.

◆ open_log_file()

void unilink::diagnostics::Logger::Impl::open_log_file ( const std::string &  filename)
inline

Definition at line 348 of file logger.cc.

◆ parse_format()

void unilink::diagnostics::Logger::Impl::parse_format ( const std::string &  format)
inline

Definition at line 91 of file logger.cc.

◆ process_batch()

void unilink::diagnostics::Logger::Impl::process_batch ( const std::vector< LogEntry > &  batch)
inline

Definition at line 452 of file logger.cc.

◆ setup_async_logging()

void unilink::diagnostics::Logger::Impl::setup_async_logging ( const AsyncLogConfig config)
inline

Definition at line 358 of file logger.cc.

◆ should_drop_log()

bool unilink::diagnostics::Logger::Impl::should_drop_log ( ) const
inline

Definition at line 460 of file logger.cc.

◆ teardown_async_logging()

void unilink::diagnostics::Logger::Impl::teardown_async_logging ( )
inline

Definition at line 373 of file logger.cc.

◆ update_stats_on_batch()

void unilink::diagnostics::Logger::Impl::update_stats_on_batch ( size_t  )
inline

Definition at line 480 of file logger.cc.

◆ update_stats_on_drop()

void unilink::diagnostics::Logger::Impl::update_stats_on_drop ( )
inline

Definition at line 475 of file logger.cc.

◆ update_stats_on_enqueue()

void unilink::diagnostics::Logger::Impl::update_stats_on_enqueue ( )
inline

Definition at line 470 of file logger.cc.

◆ update_stats_on_flush()

void unilink::diagnostics::Logger::Impl::update_stats_on_flush ( )
inline

Definition at line 485 of file logger.cc.

◆ worker_loop()

void unilink::diagnostics::Logger::Impl::worker_loop ( )
inline

Definition at line 402 of file logger.cc.

◆ write_to_console()

void unilink::diagnostics::Logger::Impl::write_to_console ( const std::string &  message) const
inline

Definition at line 286 of file logger.cc.

◆ write_to_file()

void unilink::diagnostics::Logger::Impl::write_to_file ( const std::string &  message)
inline

Definition at line 298 of file logger.cc.

◆ write_to_sinks()

void unilink::diagnostics::Logger::Impl::write_to_sinks ( LogLevel  level,
const std::string &  formatted_message 
)
inline

Definition at line 220 of file logger.cc.

Member Data Documentation

◆ async_config_

AsyncLogConfig unilink::diagnostics::Logger::Impl::async_config_

Definition at line 64 of file logger.cc.

◆ async_enabled_

std::atomic<bool> unilink::diagnostics::Logger::Impl::async_enabled_ {false}

Definition at line 63 of file logger.cc.

◆ async_stats_

AsyncLogStats unilink::diagnostics::Logger::Impl::async_stats_

Definition at line 65 of file logger.cc.

◆ callback_

LogCallback unilink::diagnostics::Logger::Impl::callback_

Definition at line 56 of file logger.cc.

◆ current_level_

std::atomic<LogLevel> unilink::diagnostics::Logger::Impl::current_level_ {LogLevel::INFO}

Definition at line 38 of file logger.cc.

◆ current_log_file_

std::string unilink::diagnostics::Logger::Impl::current_log_file_

Definition at line 60 of file logger.cc.

◆ enabled_

std::atomic<bool> unilink::diagnostics::Logger::Impl::enabled_ {true}

Definition at line 39 of file logger.cc.

◆ file_output_

std::unique_ptr<std::ofstream> unilink::diagnostics::Logger::Impl::file_output_

Definition at line 55 of file logger.cc.

◆ log_format_

std::shared_ptr<LogFormat> unilink::diagnostics::Logger::Impl::log_format_

Definition at line 53 of file logger.cc.

◆ log_queue_

std::queue<LogEntry> unilink::diagnostics::Logger::Impl::log_queue_

Definition at line 73 of file logger.cc.

◆ log_rotation_

std::unique_ptr<LogRotation> unilink::diagnostics::Logger::Impl::log_rotation_

Definition at line 59 of file logger.cc.

◆ mutex_

std::mutex unilink::diagnostics::Logger::Impl::mutex_
mutable

Definition at line 37 of file logger.cc.

◆ outputs_

std::atomic<int> unilink::diagnostics::Logger::Impl::outputs_ {static_cast<int>(LogOutput::CONSOLE)}

Definition at line 40 of file logger.cc.

◆ queue_cv_

std::condition_variable unilink::diagnostics::Logger::Impl::queue_cv_

Definition at line 75 of file logger.cc.

◆ queue_mutex_

std::mutex unilink::diagnostics::Logger::Impl::queue_mutex_
mutable

Definition at line 74 of file logger.cc.

◆ running_

std::atomic<bool> unilink::diagnostics::Logger::Impl::running_ {false}

Definition at line 69 of file logger.cc.

◆ shutdown_requested_

std::atomic<bool> unilink::diagnostics::Logger::Impl::shutdown_requested_ {false}

Definition at line 70 of file logger.cc.

◆ stats_mutex_

std::mutex unilink::diagnostics::Logger::Impl::stats_mutex_
mutable

Definition at line 76 of file logger.cc.

◆ worker_thread_

std::thread unilink::diagnostics::Logger::Impl::worker_thread_

Definition at line 68 of file logger.cc.


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