logging: Replace LogPrint macros with regular functions
This commit is contained in:
parent
4103cc3169
commit
fae3fbd61a
2 changed files with 22 additions and 32 deletions
|
@ -125,42 +125,31 @@ std::vector<CLogCategoryActive> ListActiveLogCategories();
|
||||||
/** Return true if str parses as a log category and set the flag */
|
/** Return true if str parses as a log category and set the flag */
|
||||||
bool GetLogCategory(BCLog::LogFlags& flag, const std::string& str);
|
bool GetLogCategory(BCLog::LogFlags& flag, const std::string& str);
|
||||||
|
|
||||||
/** Get format string from VA_ARGS for error reporting */
|
|
||||||
template<typename... Args> std::string FormatStringFromLogArgs(const char *fmt, const Args&... args) { return fmt; }
|
|
||||||
|
|
||||||
static inline void MarkUsed() {}
|
|
||||||
template<typename T, typename... Args> static inline void MarkUsed(const T& t, const Args&... args)
|
|
||||||
{
|
|
||||||
(void)t;
|
|
||||||
MarkUsed(args...);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Be conservative when using LogPrintf/error or other things which
|
// Be conservative when using LogPrintf/error or other things which
|
||||||
// unconditionally log to debug.log! It should not be the case that an inbound
|
// unconditionally log to debug.log! It should not be the case that an inbound
|
||||||
// peer can fill up a user's disk with debug.log entries.
|
// peer can fill up a user's disk with debug.log entries.
|
||||||
|
|
||||||
#ifdef USE_COVERAGE
|
template <typename... Args>
|
||||||
#define LogPrintf(...) do { MarkUsed(__VA_ARGS__); } while(0)
|
static inline void LogPrintf(const char* fmt, const Args&... args)
|
||||||
#define LogPrint(category, ...) do { MarkUsed(__VA_ARGS__); } while(0)
|
{
|
||||||
#else
|
if (g_logger->Enabled()) {
|
||||||
#define LogPrintf(...) do { \
|
std::string log_msg;
|
||||||
if (g_logger->Enabled()) { \
|
try {
|
||||||
std::string _log_msg_; /* Unlikely name to avoid shadowing variables */ \
|
log_msg = tfm::format(fmt, args...);
|
||||||
try { \
|
} catch (tinyformat::format_error& fmterr) {
|
||||||
_log_msg_ = tfm::format(__VA_ARGS__); \
|
/* Original format string will have newline so don't add one here */
|
||||||
} catch (tinyformat::format_error &fmterr) { \
|
log_msg = "Error \"" + std::string(fmterr.what()) + "\" while formatting log message: " + fmt;
|
||||||
/* Original format string will have newline so don't add one here */ \
|
}
|
||||||
_log_msg_ = "Error \"" + std::string(fmterr.what()) + "\" while formatting log message: " + FormatStringFromLogArgs(__VA_ARGS__); \
|
g_logger->LogPrintStr(log_msg);
|
||||||
} \
|
}
|
||||||
g_logger->LogPrintStr(_log_msg_); \
|
}
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define LogPrint(category, ...) do { \
|
template <typename... Args>
|
||||||
if (LogAcceptCategory((category))) { \
|
static inline void LogPrint(const BCLog::LogFlags& category, const Args&... args)
|
||||||
LogPrintf(__VA_ARGS__); \
|
{
|
||||||
} \
|
if (LogAcceptCategory((category))) {
|
||||||
} while(0)
|
LogPrintf(args...);
|
||||||
#endif
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // BITCOIN_LOGGING_H
|
#endif // BITCOIN_LOGGING_H
|
||||||
|
|
|
@ -20,6 +20,7 @@ FALSE_POSITIVES = [
|
||||||
("src/util.cpp", "strprintf(COPYRIGHT_HOLDERS, COPYRIGHT_HOLDERS_SUBSTITUTION)"),
|
("src/util.cpp", "strprintf(COPYRIGHT_HOLDERS, COPYRIGHT_HOLDERS_SUBSTITUTION)"),
|
||||||
("src/wallet/wallet.h", "WalletLogPrintf(std::string fmt, Params... parameters)"),
|
("src/wallet/wallet.h", "WalletLogPrintf(std::string fmt, Params... parameters)"),
|
||||||
("src/wallet/wallet.h", "LogPrintf((\"%s \" + fmt).c_str(), GetDisplayName(), parameters...)"),
|
("src/wallet/wallet.h", "LogPrintf((\"%s \" + fmt).c_str(), GetDisplayName(), parameters...)"),
|
||||||
|
("src/logging.h", "LogPrintf(const char* fmt, const Args&... args)"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue