Bitcoin ABC 0.26.3
P2P Digital Currency
|
#include <threadsafety.h>
#include <tinyformat.h>
#include <util/fs.h>
#include <util/string.h>
#include <atomic>
#include <cstdint>
#include <functional>
#include <list>
#include <mutex>
#include <string>
Go to the source code of this file.
Classes | |
struct | LogCategory |
class | BCLog::Logger |
Namespaces | |
namespace | BCLog |
Macros | |
#define | LogPrintf(...) LogPrintf_(__func__, __FILE__, __LINE__, __VA_ARGS__) |
#define | LogPrint(category, ...) |
#define | LogPrintfToBeContinued LogPrintf |
These are aliases used to explicitly state that the message should not end with a newline character. | |
#define | LogPrintToBeContinued LogPrint |
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::BENCH = (1 << 4) , BCLog::ZMQ = (1 << 5) , BCLog::WALLETDB = (1 << 6) , BCLog::RPC = (1 << 7) , BCLog::ESTIMATEFEE = (1 << 8) , BCLog::ADDRMAN = (1 << 9) , BCLog::SELECTCOINS = (1 << 10) , BCLog::REINDEX = (1 << 11) , BCLog::CMPCTBLOCK = (1 << 12) , BCLog::RAND = (1 << 13) , BCLog::PRUNE = (1 << 14) , BCLog::PROXY = (1 << 15) , BCLog::MEMPOOLREJ = (1 << 16) , BCLog::LIBEVENT = (1 << 17) , BCLog::COINDB = (1 << 18) , BCLog::QT = (1 << 19) , BCLog::LEVELDB = (1 << 20) , BCLog::VALIDATION = (1 << 21) , BCLog::AVALANCHE = (1 << 22) , BCLog::I2P = (1 << 23) , BCLog::CHRONIK = (1 << 24) , BCLog::BLOCKSTORE = (1 << 26) , BCLog::NETDEBUG = (1 << 27) , BCLog::TXPACKAGES = (1 << 28) , BCLog::ALL = ~uint32_t(0) } |
Functions | |
BCLog::Logger & | LogInstance () |
static bool | LogAcceptCategory (BCLog::LogFlags category) |
Return true if log accepts specified category. | |
bool | GetLogCategory (BCLog::LogFlags &flag, const std::string &str) |
Return true if str parses as a log category and set the flag. | |
template<typename... Args> | |
static void | LogPrintf_ (const std::string &logging_function, const std::string &source_file, const int source_line, const char *fmt, const Args &...args) |
template<typename... Args> | |
bool | error (const char *fmt, const Args &...args) |
Variables | |
static const bool | DEFAULT_LOGTIMEMICROS = false |
static const bool | DEFAULT_LOGIPS = false |
static const bool | DEFAULT_LOGTIMESTAMPS = true |
static const bool | DEFAULT_LOGTHREADNAMES = false |
static const bool | DEFAULT_LOGSOURCELOCATIONS = false |
bool | fLogIPs |
const char *const | DEFAULT_DEBUGLOGFILE |
#define LogPrint | ( | category, | |
... | |||
) |
#define LogPrintf | ( | ... | ) | LogPrintf_(__func__, __FILE__, __LINE__, __VA_ARGS__) |
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 142 of file logging.cpp.
|
inlinestatic |
BCLog::Logger & LogInstance | ( | ) |
NOTE: the logger instance 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. Since the ~Logger() destructor is never called, the Logger class and all its subclasses must have implicitly-defined destructors.
This method of initialization was originally introduced in ee3374234c60aba2cc4c5cd5cac1c0aefc2d817c.
Definition at line 20 of file logging.cpp.
|
extern |
Definition at line 18 of file logging.cpp.
|
extern |
Definition at line 17 of file logging.cpp.