![]() |
Bitcoin Core
24.1.0
P2P Digital Currency
|
#include <fs.h>#include <threadsafety.h>#include <tinyformat.h>#include <util/string.h>#include <atomic>#include <cstdint>#include <functional>#include <list>#include <mutex>#include <string>#include <unordered_map>#include <vector>Go to the source code of this file.
Classes | |
| struct | LogCategory |
| class | BCLog::Logger |
Namespaces | |
| BCLog | |
Macros | |
| #define | LogPrintLevel_(category, level, ...) LogPrintf_(__func__, __FILE__, __LINE__, category, level, __VA_ARGS__) |
| #define | LogPrintf(...) LogPrintLevel_(BCLog::LogFlags::NONE, BCLog::Level::None, __VA_ARGS__) |
| #define | LogPrintfCategory(category, ...) LogPrintLevel_(category, BCLog::Level::None, __VA_ARGS__) |
| #define | LogPrint(category, ...) |
| #define | LogPrintLevel(category, level, ...) |
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::I2P = (1 << 22), BCLog::IPC = (1 << 23), BCLog::UTIL = (1 << 25), BCLog::BLOCKSTORE = (1 << 26), BCLog::ALL = ~(uint32_t)0 } |
| enum | BCLog::Level { BCLog::Level::Trace = 0, BCLog::Level::Debug, BCLog::Level::Info, BCLog::Level::Warning, BCLog::Level::Error, BCLog::Level::None } |
Functions | |
| BCLog::Logger & | LogInstance () |
| static bool | LogAcceptCategory (BCLog::LogFlags category, BCLog::Level level) |
| Return true if log accepts specified category, at the specified level. More... | |
| bool | GetLogCategory (BCLog::LogFlags &flag, const std::string &str) |
| Return true if str parses as a log category and set the flag. More... | |
| template<typename... Args> | |
| static void | LogPrintf_ (const std::string &logging_function, const std::string &source_file, const int source_line, const BCLog::LogFlags flag, const BCLog::Level level, 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 |
| const char *const | DEFAULT_DEBUGLOGFILE |
| bool | fLogIPs |
| constexpr auto | BCLog::DEFAULT_LOG_LEVEL {Level::Debug} |
| #define LogPrint | ( | category, | |
| ... | |||
| ) |
| #define LogPrintf | ( | ... | ) | LogPrintLevel_(BCLog::LogFlags::NONE, BCLog::Level::None, __VA_ARGS__) |
| #define LogPrintfCategory | ( | category, | |
| ... | |||
| ) | LogPrintLevel_(category, BCLog::Level::None, __VA_ARGS__) |
| #define LogPrintLevel | ( | category, | |
| level, | |||
| ... | |||
| ) |
| #define LogPrintLevel_ | ( | category, | |
| level, | |||
| ... | |||
| ) | LogPrintf_(__func__, __FILE__, __LINE__, category, level, __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 187 of file logging.cpp.
|
inlinestatic |
| BCLog::Logger& LogInstance | ( | ) |
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. 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.
|
inlinestatic |
| const char* const DEFAULT_DEBUGLOGFILE |
Definition at line 17 of file logging.cpp.
| bool fLogIPs |
Definition at line 41 of file logging.cpp.
1.8.14