Bitcoin Core 28.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
BCLog::Logger Class Reference

#include <logging.h>

Collaboration diagram for BCLog::Logger:
[legend]

Classes

struct  BufferedLog
 

Public Member Functions

void LogPrintStr (std::string_view str, std::string_view logging_function, std::string_view source_file, int source_line, BCLog::LogFlags category, BCLog::Level level) EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Send a string to the log output.
 
bool Enabled () const EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Returns whether logs will be written to any output.
 
std::list< std::function< void(conststd::string &)> >::iterator PushBackCallback (std::function< void(const std::string &)> fun) EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Connect a slot to the print signal and return the connection.
 
void DeleteCallback (std::list< std::function< void(const std::string &)> >::iterator it) EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Delete a connection.
 
bool StartLogging () EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Start logging (and flush all buffered messages)
 
void DisconnectTestLogger () EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Only for testing.
 
void DisableLogging () EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 Disable logging This offers a slight speedup and slightly smaller memory usage compared to leaving the logging system in its default state.
 
void ShrinkDebugFile ()
 
std::unordered_map< LogFlags, LevelCategoryLevels () const EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 
void SetCategoryLogLevel (const std::unordered_map< LogFlags, Level > &levels) EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 
bool SetCategoryLogLevel (std::string_view category_str, std::string_view level_str) EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 
Level LogLevel () const
 
void SetLogLevel (Level level)
 
bool SetLogLevel (std::string_view level)
 
uint32_t GetCategoryMask () const
 
void EnableCategory (LogFlags flag)
 
bool EnableCategory (std::string_view str)
 
void DisableCategory (LogFlags flag)
 
bool DisableCategory (std::string_view str)
 
bool WillLogCategory (LogFlags category) const
 
bool WillLogCategoryLevel (LogFlags category, Level level) const EXCLUSIVE_LOCKS_REQUIRED(!m_cs)
 
std::vector< LogCategoryLogCategoriesList () const
 Returns a vector of the log categories in alphabetical order.
 
std::string LogCategoriesString () const
 Returns a string with the log categories in alphabetical order.
 
std::string LogLevelsString () const
 Returns a string with all user-selectable log levels.
 
bool DefaultShrinkDebugFile () const
 

Static Public Member Functions

static std::string LogLevelToStr (BCLog::Level level)
 Returns the string representation of a log level.
 

Public Attributes

bool m_print_to_console = false
 
bool m_print_to_file = false
 
bool m_log_timestamps = DEFAULT_LOGTIMESTAMPS
 
bool m_log_time_micros = DEFAULT_LOGTIMEMICROS
 
bool m_log_threadnames = DEFAULT_LOGTHREADNAMES
 
bool m_log_sourcelocations = DEFAULT_LOGSOURCELOCATIONS
 
bool m_always_print_category_level = DEFAULT_LOGLEVELALWAYS
 
fs::path m_file_path
 
std::atomic< bool > m_reopen_file {false}
 

Private Member Functions

FILE *m_fileout GUARDED_BY (m_cs)
 
std::list< BufferedLog > m_msgs_before_open GUARDED_BY (m_cs)
 
bool m_buffering GUARDED_BY (m_cs)
 Buffer messages before logging can be started.
 
size_t m_max_buffer_memusage GUARDED_BY (m_cs)
 
size_t m_cur_buffer_memusage GUARDED_BY (m_cs)
 
size_t m_buffer_lines_discarded GUARDED_BY (m_cs)
 
std::unordered_map< LogFlags, Level > m_category_log_levels GUARDED_BY (m_cs)
 Category-specific log level. Overrides m_log_level.
 
void FormatLogStrInPlace (std::string &str, LogFlags category, Level level, std::string_view source_file, int source_line, std::string_view logging_function, std::string_view threadname, SystemClock::time_point now, std::chrono::seconds mocktime) const
 
std::string LogTimestampStr (SystemClock::time_point now, std::chrono::seconds mocktime) const
 
std::list< std::function< void(const std::string &)> > m_print_callbacks GUARDED_BY (m_cs)
 Slots that connect to the print signal.
 
void LogPrintStr_ (std::string_view str, std::string_view logging_function, std::string_view source_file, int source_line, BCLog::LogFlags category, BCLog::Level level) EXCLUSIVE_LOCKS_REQUIRED(m_cs)
 Send a string to the log output (internal)
 
std::string GetLogPrefix (LogFlags category, Level level) const
 

Private Attributes

StdMutex m_cs
 
std::atomic_bool m_started_new_line {true}
 m_started_new_line is a state variable that will suppress printing of the timestamp when multiple calls are made that don't end in a newline.
 
std::atomic< Levelm_log_level {DEFAULT_LOG_LEVEL}
 If there is no category-specific log level, all logs with a severity level lower than m_log_level will be ignored.
 
std::atomic< uint32_t > m_categories {BCLog::NONE}
 Log categories bitfield.
 

Detailed Description

Definition at line 85 of file logging.h.

Member Function Documentation

◆ CategoryLevels()

std::unordered_map< LogFlags, Level > BCLog::Logger::CategoryLevels ( ) const
inline

Definition at line 191 of file logging.h.

Here is the caller graph for this function:

◆ DefaultShrinkDebugFile()

bool BCLog::Logger::DefaultShrinkDebugFile ( ) const

Definition at line 165 of file logging.cpp.

◆ DeleteCallback()

void BCLog::Logger::DeleteCallback ( std::list< std::function< void(const std::string &)> >::iterator it)
inline

Delete a connection.

Definition at line 170 of file logging.h.

Here is the caller graph for this function:

◆ DisableCategory() [1/2]

void BCLog::Logger::DisableCategory ( BCLog::LogFlags flag)

Definition at line 134 of file logging.cpp.

Here is the caller graph for this function:

◆ DisableCategory() [2/2]

bool BCLog::Logger::DisableCategory ( std::string_view str)

Definition at line 139 of file logging.cpp.

Here is the call graph for this function:

◆ DisableLogging()

void BCLog::Logger::DisableLogging ( )

Disable logging This offers a slight speedup and slightly smaller memory usage compared to leaving the logging system in its default state.

Mostly intended for libbitcoin-kernel apps that don't want any logging. Should be used instead of StartLogging().

Definition at line 109 of file logging.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DisconnectTestLogger()

void BCLog::Logger::DisconnectTestLogger ( )

Only for testing.

Definition at line 95 of file logging.cpp.

Here is the caller graph for this function:

◆ EnableCategory() [1/2]

void BCLog::Logger::EnableCategory ( BCLog::LogFlags flag)

Definition at line 121 of file logging.cpp.

Here is the caller graph for this function:

◆ EnableCategory() [2/2]

bool BCLog::Logger::EnableCategory ( std::string_view str)

Definition at line 126 of file logging.cpp.

Here is the call graph for this function:

◆ Enabled()

bool BCLog::Logger::Enabled ( ) const
inline

Returns whether logs will be written to any output.

Definition at line 155 of file logging.h.

◆ FormatLogStrInPlace()

void BCLog::Logger::FormatLogStrInPlace ( std::string & str,
BCLog::LogFlags category,
BCLog::Level level,
std::string_view source_file,
int source_line,
std::string_view logging_function,
std::string_view threadname,
SystemClock::time_point now,
std::chrono::seconds mocktime ) const
private

Definition at line 370 of file logging.cpp.

Here is the caller graph for this function:

◆ GetCategoryMask()

uint32_t BCLog::Logger::GetCategoryMask ( ) const
inline

Definition at line 207 of file logging.h.

Here is the caller graph for this function:

◆ GetLogPrefix()

std::string BCLog::Logger::GetLogPrefix ( BCLog::LogFlags category,
BCLog::Level level ) const
private

Definition at line 339 of file logging.cpp.

Here is the call graph for this function:

◆ GUARDED_BY() [1/8]

FILE *m_fileout BCLog::Logger::GUARDED_BY ( m_cs )
private

◆ GUARDED_BY() [2/8]

std::list< BufferedLog > m_msgs_before_open BCLog::Logger::GUARDED_BY ( m_cs )
private

◆ GUARDED_BY() [3/8]

bool m_buffering BCLog::Logger::GUARDED_BY ( m_cs )
private

Buffer messages before logging can be started.

◆ GUARDED_BY() [4/8]

size_t m_max_buffer_memusage BCLog::Logger::GUARDED_BY ( m_cs )
inlineprivate

Definition at line 103 of file logging.h.

◆ GUARDED_BY() [5/8]

size_t m_cur_buffer_memusage BCLog::Logger::GUARDED_BY ( m_cs )
inlineprivate

Definition at line 104 of file logging.h.

◆ GUARDED_BY() [6/8]

size_t m_buffer_lines_discarded BCLog::Logger::GUARDED_BY ( m_cs )
inlineprivate

Definition at line 105 of file logging.h.

◆ GUARDED_BY() [7/8]

std::unordered_map< LogFlags, Level > m_category_log_levels BCLog::Logger::GUARDED_BY ( m_cs )
private

Category-specific log level. Overrides m_log_level.

◆ GUARDED_BY() [8/8]

std::list< std::function< void(const std::string &)> > m_print_callbacks BCLog::Logger::GUARDED_BY ( m_cs )
inlineprivate

Slots that connect to the print signal.

Definition at line 129 of file logging.h.

◆ LogCategoriesList()

std::vector< LogCategory > BCLog::Logger::LogCategoriesList ( ) const

Returns a vector of the log categories in alphabetical order.

Definition at line 274 of file logging.cpp.

Here is the caller graph for this function:

◆ LogCategoriesString()

std::string BCLog::Logger::LogCategoriesString ( ) const
inline

Returns a string with the log categories in alphabetical order.

Definition at line 220 of file logging.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LogLevel()

Level BCLog::Logger::LogLevel ( ) const
inline

Definition at line 203 of file logging.h.

◆ LogLevelsString()

std::string BCLog::Logger::LogLevelsString ( ) const

Returns a string with all user-selectable log levels.

Definition at line 290 of file logging.cpp.

Here is the call graph for this function:

◆ LogLevelToStr()

std::string BCLog::Logger::LogLevelToStr ( BCLog::Level level)
static

Returns the string representation of a log level.

Definition at line 230 of file logging.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LogPrintStr()

void BCLog::Logger::LogPrintStr ( std::string_view str,
std::string_view logging_function,
std::string_view source_file,
int source_line,
BCLog::LogFlags category,
BCLog::Level level )

Send a string to the log output.

Definition at line 385 of file logging.cpp.

Here is the caller graph for this function:

◆ LogPrintStr_()

void BCLog::Logger::LogPrintStr_ ( std::string_view str,
std::string_view logging_function,
std::string_view source_file,
int source_line,
BCLog::LogFlags category,
BCLog::Level level )
private

Send a string to the log output (internal)

Definition at line 391 of file logging.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LogTimestampStr()

std::string BCLog::Logger::LogTimestampStr ( SystemClock::time_point now,
std::chrono::seconds mocktime ) const
private

Definition at line 296 of file logging.cpp.

Here is the call graph for this function:

◆ PushBackCallback()

std::list< std::function< void(conststd::string &)> >::iterator BCLog::Logger::PushBackCallback ( std::function< void(const std::string &)> fun)
inline

Connect a slot to the print signal and return the connection.

Definition at line 162 of file logging.h.

Here is the caller graph for this function:

◆ SetCategoryLogLevel() [1/2]

void BCLog::Logger::SetCategoryLogLevel ( const std::unordered_map< LogFlags, Level > & levels)
inline

Definition at line 196 of file logging.h.

Here is the caller graph for this function:

◆ SetCategoryLogLevel() [2/2]

bool BCLog::Logger::SetCategoryLogLevel ( std::string_view category_str,
std::string_view level_str )

Definition at line 517 of file logging.cpp.

Here is the call graph for this function:

◆ SetLogLevel() [1/2]

void BCLog::Logger::SetLogLevel ( Level level)
inline

Definition at line 204 of file logging.h.

Here is the caller graph for this function:

◆ SetLogLevel() [2/2]

bool BCLog::Logger::SetLogLevel ( std::string_view level)

Definition at line 509 of file logging.cpp.

Here is the call graph for this function:

◆ ShrinkDebugFile()

void BCLog::Logger::ShrinkDebugFile ( )

Definition at line 468 of file logging.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartLogging()

bool BCLog::Logger::StartLogging ( )

Start logging (and flush all buffered messages)

Definition at line 51 of file logging.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WillLogCategory()

bool BCLog::Logger::WillLogCategory ( BCLog::LogFlags category) const

Definition at line 147 of file logging.cpp.

◆ WillLogCategoryLevel()

bool BCLog::Logger::WillLogCategoryLevel ( BCLog::LogFlags category,
BCLog::Level level ) const

Definition at line 152 of file logging.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ m_always_print_category_level

bool BCLog::Logger::m_always_print_category_level = DEFAULT_LOGLEVELALWAYS

Definition at line 145 of file logging.h.

◆ m_categories

std::atomic<uint32_t> BCLog::Logger::m_categories {BCLog::NONE}
private

Log categories bitfield.

Definition at line 122 of file logging.h.

◆ m_cs

StdMutex BCLog::Logger::m_cs
mutableprivate

Definition at line 98 of file logging.h.

◆ m_file_path

fs::path BCLog::Logger::m_file_path

Definition at line 147 of file logging.h.

◆ m_log_level

std::atomic<Level> BCLog::Logger::m_log_level {DEFAULT_LOG_LEVEL}
private

If there is no category-specific log level, all logs with a severity level lower than m_log_level will be ignored.

Definition at line 119 of file logging.h.

◆ m_log_sourcelocations

bool BCLog::Logger::m_log_sourcelocations = DEFAULT_LOGSOURCELOCATIONS

Definition at line 144 of file logging.h.

◆ m_log_threadnames

bool BCLog::Logger::m_log_threadnames = DEFAULT_LOGTHREADNAMES

Definition at line 143 of file logging.h.

◆ m_log_time_micros

bool BCLog::Logger::m_log_time_micros = DEFAULT_LOGTIMEMICROS

Definition at line 142 of file logging.h.

◆ m_log_timestamps

bool BCLog::Logger::m_log_timestamps = DEFAULT_LOGTIMESTAMPS

Definition at line 141 of file logging.h.

◆ m_print_to_console

bool BCLog::Logger::m_print_to_console = false

Definition at line 138 of file logging.h.

◆ m_print_to_file

bool BCLog::Logger::m_print_to_file = false

Definition at line 139 of file logging.h.

◆ m_reopen_file

std::atomic<bool> BCLog::Logger::m_reopen_file {false}

Definition at line 148 of file logging.h.

◆ m_started_new_line

std::atomic_bool BCLog::Logger::m_started_new_line {true}
private

m_started_new_line is a state variable that will suppress printing of the timestamp when multiple calls are made that don't end in a newline.

Definition at line 112 of file logging.h.


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