From 639b28700402fa3335f5b694a2b450eb13775c75 Mon Sep 17 00:00:00 2001 From: David Rohr Date: Wed, 17 Jun 2020 14:21:40 +0200 Subject: [PATCH] Suppress LOG messages with debug severity or less at compile time for release builds --- logger/Logger.h | 62 +++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/logger/Logger.h b/logger/Logger.h index 5f8ae9c..b69c763 100644 --- a/logger/Logger.h +++ b/logger/Logger.h @@ -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 #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,13 +407,15 @@ class Logger // Log line if the provided severity is below or equals the configured one #define FAIR_LOG(severity) \ - for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ - fair::Logger(fair::Severity::severity, MSG_ORIGIN) + 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) \ - for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ - fair::Logger(fair::Severity::severity, fair::Verbosity::verbosity, MSG_ORIGIN) + 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) // Log with fmt- or printf-like formatting #define FAIR_LOGF(severity, ...) LOG(severity) << fmt::format(__VA_ARGS__) @@ -408,16 +423,19 @@ class Logger // Log an empty line #define FAIR_LOGN(severity) \ - for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ - fair::Logger(fair::Severity::severity, fair::Verbosity::verylow, MSG_ORIGIN).LogEmptyLine() + 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) \ - for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ - fair::Logger(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) \ - for (bool fairLOggerunLikelyvariable2 = false; condition && !fairLOggerunLikelyvariable2; fairLOggerunLikelyvariable2 = true) \ - LOG(severity) + if (fair::Logger::SuppressSeverity(fair::Severity::severity)) ; else \ + for (bool fairLOggerunLikelyvariable2 = false; condition && !fairLOggerunLikelyvariable2; fairLOggerunLikelyvariable2 = true) \ + LOG(severity) #endif // FAIR_LOGGER_H