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..."
#endif
#if !defined(FAIR_MIN_SEVERITY) && defined(NDEBUG)
#define FAIR_MIN_SEVERITY info
#endif
#ifdef FAIRLOGGER_USE_BOOST_PRETTY_FUNCTION
#include <boost/current_function.hpp>
#endif
@ -46,18 +50,18 @@ namespace fair
enum class Severity : int
{
nolog,
fatal,
error,
warn,
state,
info,
debug,
debug1,
debug2,
debug3,
debug4,
trace,
nolog = 0,
fatal = 11,
error = 10,
warn = 9,
state = 8,
info = 7,
debug = 6,
debug1 = 5,
debug2 = 4,
debug3 = 3,
debug4 = 2,
trace = 1,
// backwards-compatibility:
NOLOG = nolog,
FATAL = fatal,
@ -313,6 +317,15 @@ class Logger
static bool fIsDestructed;
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:
LogMetaData fInfos;
@ -394,11 +407,13 @@ class Logger
// Log line if the provided severity is below or equals the configured one
#define FAIR_LOG(severity) \
if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
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
#define FAIR_LOGV(severity, verbosity) \
if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(fair::Severity::severity, fair::Verbosity::verbosity, MSG_ORIGIN)
@ -408,15 +423,18 @@ class Logger
// Log an empty line
#define FAIR_LOGN(severity) \
if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
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
#define FAIR_LOGD(severity, file, line, f) \
if (fair::Logger::SuppressSeverity(severity)) ; else \
for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \
fair::Logger(severity, file, line, f)
#define FAIR_LOG_IF(severity, condition) \
if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \
for (bool fairLOggerunLikelyvariable2 = false; condition && !fairLOggerunLikelyvariable2; fairLOggerunLikelyvariable2 = true) \
LOG(severity)