PIVX Core  5.6.99
P2P Digital Currency
Classes | Namespaces | Macros | Enumerations | Functions | Variables
logging.h File Reference
#include "fs.h"
#include "tinyformat.h"
#include <atomic>
#include <cstdint>
#include <list>
#include <mutex>
#include <vector>
Include dependency graph for logging.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  CLogCategoryActive
 
class  BCLog::Logger
 
class  CBatchedLogger
 PIVX. More...
 

Namespaces

 BCLog
 

Macros

#define LogPrint(category, ...)
 

Enumerations

enum  BCLog::LogFlags : uint32_t {
  BCLog::NONE = 0 , BCLog::NET = (1 << 0) , BCLog::TOR = (1 << 1) , BCLog::MEMPOOL = (1 << 2) ,
  BCLog::HTTP = (1 << 3) , BCLog::BENCHMARK = (1 << 4) , BCLog::ZMQ = (1 << 5) , BCLog::DB = (1 << 6) ,
  BCLog::RPC = (1 << 7) , BCLog::ESTIMATEFEE = (1 << 8) , BCLog::ADDRMAN = (1 << 9) , BCLog::REINDEX = (1 << 10) ,
  BCLog::PROXY = (1 << 11) , BCLog::MEMPOOLREJ = (1 << 12) , BCLog::LIBEVENT = (1 << 13) , BCLog::COINDB = (1 << 14) ,
  BCLog::QT = (1 << 15) , BCLog::LEVELDB = (1 << 16) , BCLog::STAKING = (1 << 17) , BCLog::MASTERNODE = (1 << 18) ,
  BCLog::MNBUDGET = (1 << 19) , BCLog::MNPING = (1 << 20) , BCLog::LEGACYZC = (1 << 21) , BCLog::SAPLING = (1 << 22) ,
  BCLog::SPORKS = (1 << 23) , BCLog::VALIDATION = (1 << 24) , BCLog::LLMQ = (1 << 25) , BCLog::NET_MN = (1 << 26) ,
  BCLog::DKG = (1 << 27) , BCLog::CHAINLOCKS = (1 << 28) , BCLog::ALL = ~(uint32_t)0
}
 

Functions

std::string ListLogCategories ()
 Returns a string with the supported log categories. More...
 
std::vector< CLogCategoryActiveListActiveLogCategories ()
 Returns a vector of the active log categories. More...
 
bool GetLogCategory (BCLog::LogFlags &flag, const std::string &str)
 Return true if str parses as a log category and set the flag. More...
 

Variables

const char *const DEFAULT_DEBUGLOGFILE
 
bool fLogIPs
 
BCLog::Logger *const g_logger
 NOTE: the logger instances is leaked on exit. More...
 

Macro Definition Documentation

◆ LogPrint

#define LogPrint (   category,
  ... 
)
Value:
do { \
if (LogAcceptCategory((category))) { \
LogPrintf(__VA_ARGS__); \
} \
} while(0)

Definition at line 163 of file logging.h.

Function Documentation

◆ GetLogCategory()

bool GetLogCategory ( BCLog::LogFlags flag,
const std::string &  str 
)

Return true if str parses as a log category and set the flag.

Definition at line 133 of file logging.cpp.

Here is the caller graph for this function:

◆ ListActiveLogCategories()

std::vector<CLogCategoryActive> ListActiveLogCategories ( )

Returns a vector of the active log categories.

Definition at line 163 of file logging.cpp.

Here is the caller graph for this function:

◆ ListLogCategories()

std::string ListLogCategories ( )

Returns a string with the supported log categories.

Definition at line 148 of file logging.cpp.

Here is the caller graph for this function:

Variable Documentation

◆ DEFAULT_DEBUGLOGFILE

const char* const DEFAULT_DEBUGLOGFILE
extern

Definition at line 11 of file logging.cpp.

◆ fLogIPs

bool fLogIPs
extern

Definition at line 28 of file logging.cpp.

◆ g_logger

BCLog::Logger* const g_logger
extern

NOTE: the logger instances is leaked on exit.

This is ugly, but will be cleaned up by the OS/libc. Defining a logger as a global object doesn't work since the order of destruction of static/global objects is undefined. Consider if the logger gets destroyed, and then some later destructor calls LogPrintf, maybe indirectly, and you get a core dump at shutdown trying to access the logger. When the shutdown sequence is fully audited and tested, explicit destruction of these objects can be implemented by changing this from a raw pointer to a std::unique_ptr.

This method of initialization was originally introduced in bitcoin@ee3374234c60aba2cc4c5cd5cac1c0aefc2d817c.

Definition at line 26 of file logging.cpp.