aboutsummaryrefslogtreecommitdiff
path: root/src/logging.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/logging.h')
-rw-r--r--src/logging.h47
1 files changed, 22 insertions, 25 deletions
diff --git a/src/logging.h b/src/logging.h
index f7380d8928..cfef65221f 100644
--- a/src/logging.h
+++ b/src/logging.h
@@ -25,6 +25,7 @@ static const bool DEFAULT_LOGIPS = false;
static const bool DEFAULT_LOGTIMESTAMPS = true;
static const bool DEFAULT_LOGTHREADNAMES = false;
static const bool DEFAULT_LOGSOURCELOCATIONS = false;
+static constexpr bool DEFAULT_LOGLEVELALWAYS = false;
extern const char * const DEFAULT_DEBUGLOGFILE;
extern bool fLogIPs;
@@ -64,11 +65,10 @@ namespace BCLog {
#ifdef DEBUG_LOCKCONTENTION
LOCK = (1 << 24),
#endif
- UTIL = (1 << 25),
- BLOCKSTORAGE = (1 << 26),
- TXRECONCILIATION = (1 << 27),
- SCAN = (1 << 28),
- TXPACKAGES = (1 << 29),
+ BLOCKSTORAGE = (1 << 25),
+ TXRECONCILIATION = (1 << 26),
+ SCAN = (1 << 27),
+ TXPACKAGES = (1 << 28),
ALL = ~(uint32_t)0,
};
enum class Level {
@@ -77,7 +77,6 @@ namespace BCLog {
Info, // Default
Warning,
Error,
- None, // Internal use only
};
constexpr auto DEFAULT_LOG_LEVEL{Level::Debug};
@@ -120,10 +119,13 @@ namespace BCLog {
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};
+ std::string GetLogPrefix(LogFlags category, Level level) const;
+
/** Send a string to the log output */
void LogPrintStr(const std::string& str, const std::string& logging_function, const std::string& source_file, int source_line, BCLog::LogFlags category, BCLog::Level level);
@@ -194,7 +196,7 @@ namespace BCLog {
std::string LogLevelsString() const;
//! Returns the string representation of a log level.
- std::string LogLevelToStr(BCLog::Level level) const;
+ static std::string LogLevelToStr(BCLog::Level level);
bool DefaultShrinkDebugFile() const;
};
@@ -212,7 +214,7 @@ static inline bool LogAcceptCategory(BCLog::LogFlags category, BCLog::Level leve
/** Return true if str parses as a log category and set the flag */
bool GetLogCategory(BCLog::LogFlags& flag, const std::string& str);
-// Be conservative when using LogPrintf/error or other things which
+// Be conservative when using functions that
// 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.
@@ -234,22 +236,17 @@ static inline void LogPrintf_(const std::string& logging_function, const std::st
#define LogPrintLevel_(category, level, ...) LogPrintf_(__func__, __FILE__, __LINE__, category, level, __VA_ARGS__)
// Log unconditionally.
-#define LogPrintf(...) LogPrintLevel_(BCLog::LogFlags::NONE, BCLog::Level::None, __VA_ARGS__)
+#define LogInfo(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Info, __VA_ARGS__)
+#define LogWarning(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Warning, __VA_ARGS__)
+#define LogError(...) LogPrintLevel_(BCLog::LogFlags::ALL, BCLog::Level::Error, __VA_ARGS__)
-// Log unconditionally, prefixing the output with the passed category name.
-#define LogPrintfCategory(category, ...) LogPrintLevel_(category, BCLog::Level::None, __VA_ARGS__)
+// Deprecated unconditional logging.
+#define LogPrintf(...) LogInfo(__VA_ARGS__)
+#define LogPrintfCategory(category, ...) LogPrintLevel_(category, BCLog::Level::Info, __VA_ARGS__)
// Use a macro instead of a function for conditional logging to prevent
// evaluating arguments when logging for the category is not enabled.
-// Log conditionally, prefixing the output with the passed category name.
-#define LogPrint(category, ...) \
- do { \
- if (LogAcceptCategory((category), BCLog::Level::Debug)) { \
- LogPrintLevel_(category, BCLog::Level::None, __VA_ARGS__); \
- } \
- } while (0)
-
// Log conditionally, prefixing the output with the passed category name and severity level.
#define LogPrintLevel(category, level, ...) \
do { \
@@ -258,11 +255,11 @@ static inline void LogPrintf_(const std::string& logging_function, const std::st
} \
} while (0)
-template <typename... Args>
-bool error(const char* fmt, const Args&... args)
-{
- LogPrintf("ERROR: %s\n", tfm::format(fmt, args...));
- return false;
-}
+// Log conditionally, prefixing the output with the passed category name.
+#define LogDebug(category, ...) LogPrintLevel(category, BCLog::Level::Debug, __VA_ARGS__)
+#define LogTrace(category, ...) LogPrintLevel(category, BCLog::Level::Trace, __VA_ARGS__)
+
+// Deprecated conditional logging
+#define LogPrint(category, ...) LogDebug(category, __VA_ARGS__)
#endif // BITCOIN_LOGGING_H