Suppress LOG messages with debug severity or less at compile time for release builds

This commit is contained in:
David Rohr 2020-06-17 14:21:40 +02:00 committed by Alexey Rybalchenko
parent cdf887f5da
commit cfe0f9dc53

View File

@ -13,6 +13,10 @@
#warning "The symbol 'DEBUG' is used in FairRoot Logger. undefining..." #warning "The symbol 'DEBUG' is used in FairRoot Logger. undefining..."
#endif #endif
#if !defined(FAIR_MIN_SEVERITY) && defined(NDEBUG)
#define FAIR_MIN_SEVERITY info
#endif
#ifdef FAIRLOGGER_USE_BOOST_PRETTY_FUNCTION #ifdef FAIRLOGGER_USE_BOOST_PRETTY_FUNCTION
#include <boost/current_function.hpp> #include <boost/current_function.hpp>
#endif #endif
@ -46,18 +50,18 @@ namespace fair
enum class Severity : int enum class Severity : int
{ {
nolog, nolog = 0,
fatal, fatal = 11,
error, error = 10,
warn, warn = 9,
state, state = 8,
info, info = 7,
debug, debug = 6,
debug1, debug1 = 5,
debug2, debug2 = 4,
debug3, debug3 = 3,
debug4, debug4 = 2,
trace, trace = 1,
// backwards-compatibility: // backwards-compatibility:
NOLOG = nolog, NOLOG = nolog,
FATAL = fatal, FATAL = fatal,
@ -313,6 +317,15 @@ class Logger
static bool fIsDestructed; static bool fIsDestructed;
static struct DestructionHelper { ~DestructionHelper() { Logger::fIsDestructed = true; }} fDestructionHelper; static struct DestructionHelper { ~DestructionHelper() { Logger::fIsDestructed = true; }} fDestructionHelper;
static bool constexpr SuppressSeverity(Severity sev)
{
#ifdef FAIR_MIN_SEVERITY
return sev < Severity::FAIR_MIN_SEVERITY;
#else
return false;
#endif
}
private: private:
LogMetaData fInfos; LogMetaData fInfos;
@ -394,13 +407,15 @@ class Logger
// Log line if the provided severity is below or equals the configured one // Log line if the provided severity is below or equals the configured one
#define FAIR_LOG(severity) \ #define FAIR_LOG(severity) \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
fair::Logger(fair::Severity::severity, MSG_ORIGIN) for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(fair::Severity::severity, MSG_ORIGIN)
// Log line with the given verbosity if the provided severity is below or equals the configured one // Log line with the given verbosity if the provided severity is below or equals the configured one
#define FAIR_LOGV(severity, verbosity) \ #define FAIR_LOGV(severity, verbosity) \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
fair::Logger(fair::Severity::severity, fair::Verbosity::verbosity, MSG_ORIGIN) for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(fair::Severity::severity, fair::Verbosity::verbosity, MSG_ORIGIN)
// Log with fmt- or printf-like formatting // Log with fmt- or printf-like formatting
#define FAIR_LOGF(severity, ...) LOG(severity) << fmt::format(__VA_ARGS__) #define FAIR_LOGF(severity, ...) LOG(severity) << fmt::format(__VA_ARGS__)
@ -408,16 +423,19 @@ class Logger
// Log an empty line // Log an empty line
#define FAIR_LOGN(severity) \ #define FAIR_LOGN(severity) \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
fair::Logger(fair::Severity::severity, fair::Verbosity::verylow, MSG_ORIGIN).LogEmptyLine() for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(fair::Severity::severity, fair::Verbosity::verylow, MSG_ORIGIN).LogEmptyLine()
// Log with custom file, line, function // Log with custom file, line, function
#define FAIR_LOGD(severity, file, line, f) \ #define FAIR_LOGD(severity, file, line, f) \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ if (fair::Logger::SuppressSeverity(severity)) ; else \
fair::Logger(severity, file, line, f) for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(severity, file, line, f)
#define FAIR_LOG_IF(severity, condition) \ #define FAIR_LOG_IF(severity, condition) \
for (bool fairLOggerunLikelyvariable2 = false; condition && !fairLOggerunLikelyvariable2; fairLOggerunLikelyvariable2 = true) \ if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
LOG(severity) for (bool fairLOggerunLikelyvariable2 = false; condition && !fairLOggerunLikelyvariable2; fairLOggerunLikelyvariable2 = true) \
LOG(severity)
#endif // FAIR_LOGGER_H #endif // FAIR_LOGGER_H