mirror of
https://github.com/FairRootGroup/FairLogger.git
synced 2025-10-15 17:41:44 +00:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8446c6db0c | ||
|
a0ff4eba50 | ||
|
cfe0f9dc53 |
39
README.md
39
README.md
@@ -42,7 +42,7 @@ If FairLogger is built with `-DUSE_BOOST_PRETTY_FUNCTION=ON` and/or `-DUSE_EXTER
|
||||
```cmake
|
||||
find_package(FairLogger)
|
||||
foreach(dep IN LISTS FairLogger_PACKAGE_DEPENDENCIES)
|
||||
 find_package(${dep} ${FairLogger_${dep}_VERSION})
|
||||
find_package(${dep} ${FairLogger_${dep}_VERSION})
|
||||
endforeach()
|
||||
```
|
||||
|
||||
@@ -87,21 +87,32 @@ where severity level is one of the following:
|
||||
|
||||
```C++
|
||||
"nolog",
|
||||
"fatal",
|
||||
"error",
|
||||
"warn",
|
||||
"state",
|
||||
"info",
|
||||
"debug",
|
||||
"debug1",
|
||||
"debug2",
|
||||
"debug3",
|
||||
"debug4",
|
||||
"trace",
|
||||
"debug4",
|
||||
"debug3",
|
||||
"debug2",
|
||||
"debug1",
|
||||
"debug",
|
||||
"info",
|
||||
"state",
|
||||
"warn",
|
||||
"error",
|
||||
"fatal",
|
||||
```
|
||||
|
||||
Logger will log the chosen severity and all above it (except "nolog", which deactivates logging for that sink completely). Fatal severity is always logged.
|
||||
|
||||
## 3.1 Compile-time severity switch
|
||||
|
||||
The minimum severity level can be configured at compile time via definition of `FAIR_MIN_SEVERITY`:
|
||||
|
||||
```C++
|
||||
#define FAIR_MIN_SEVERITY warn // only allow severities >= warn
|
||||
#include <fairlogger/Logger.h>
|
||||
```
|
||||
|
||||
When `FAIR_MIN_SEVERITY` is not provided, it will be set to `info` if `NDEBUG` is defined, otherwise all severities will be enabled.
|
||||
|
||||
## 4. Verbosity
|
||||
|
||||
The log verbosity is controlled via:
|
||||
@@ -213,14 +224,14 @@ By default, `<fairlogger/Logger.h>` defines unprefixed macros: `LOG`, `LOGV`, `L
|
||||
|
||||
Define an option `FAIR_NO_LOG*` to prevent the above unprefixed macros to be defined, e.g.
|
||||
|
||||
\```cpp
|
||||
```C++
|
||||
#define FAIR_NO_LOG
|
||||
#define FAIR_NO_LOGF
|
||||
#include <fairlogger/Logger.h>
|
||||
\```
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
GNU Lesser General Public Licence (LGPL) version 3, see [LICENSE](LICENSE).
|
||||
|
||||
Copyright (C) 2017-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
|
||||
Copyright (C) 2017-2020 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
|
||||
|
@@ -112,17 +112,17 @@ const array<string, 12> Logger::fSeverityNames =
|
||||
{
|
||||
{
|
||||
"NOLOG",
|
||||
"FATAL",
|
||||
"ERROR",
|
||||
"WARN",
|
||||
"STATE",
|
||||
"INFO",
|
||||
"DEBUG",
|
||||
"DEBUG1",
|
||||
"DEBUG2",
|
||||
"DEBUG3",
|
||||
"TRACE",
|
||||
"DEBUG4",
|
||||
"TRACE"
|
||||
"DEBUG3",
|
||||
"DEBUG2",
|
||||
"DEBUG1",
|
||||
"DEBUG",
|
||||
"INFO",
|
||||
"STATE",
|
||||
"WARN",
|
||||
"ERROR",
|
||||
"FATAL"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -425,25 +425,26 @@ void Logger::CycleVerbosityDown()
|
||||
|
||||
void Logger::UpdateMinSeverity()
|
||||
{
|
||||
fMinSeverity = (fConsoleSeverity <= fFileSeverity) ? fFileSeverity : fConsoleSeverity;
|
||||
if (fFileSeverity == Severity::nolog) {
|
||||
fMinSeverity = fConsoleSeverity;
|
||||
} else {
|
||||
fMinSeverity = std::min(fConsoleSeverity, fFileSeverity);
|
||||
}
|
||||
|
||||
for (auto& it : fCustomSinks) {
|
||||
if (fMinSeverity <= it.second.first) {
|
||||
fMinSeverity = it.second.first;
|
||||
if (fMinSeverity == Severity::nolog) {
|
||||
fMinSeverity = std::max(fMinSeverity, it.second.first);
|
||||
} else if (it.second.first != Severity::nolog) {
|
||||
fMinSeverity = std::min(fMinSeverity, it.second.first);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Logger::Logging(Severity severity)
|
||||
{
|
||||
if (Severity::fatal == severity) {
|
||||
return true;
|
||||
}
|
||||
if (severity <= fMinSeverity && severity > Severity::nolog) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return (severity >= fMinSeverity &&
|
||||
fMinSeverity > Severity::nolog) ||
|
||||
severity == Severity::fatal;
|
||||
}
|
||||
|
||||
bool Logger::Logging(const string& severityStr)
|
||||
@@ -548,22 +549,22 @@ void Logger::RemoveFileSink()
|
||||
|
||||
bool Logger::LoggingToConsole() const
|
||||
{
|
||||
return (fInfos.severity <= fConsoleSeverity &&
|
||||
fInfos.severity > Severity::nolog) ||
|
||||
return (fInfos.severity >= fConsoleSeverity &&
|
||||
fConsoleSeverity > Severity::nolog) ||
|
||||
fInfos.severity == Severity::fatal;
|
||||
}
|
||||
|
||||
bool Logger::LoggingToFile() const
|
||||
{
|
||||
return (fInfos.severity <= fFileSeverity &&
|
||||
fInfos.severity > Severity::nolog) ||
|
||||
return (fInfos.severity >= fFileSeverity &&
|
||||
fFileSeverity > Severity::nolog) ||
|
||||
fInfos.severity == Severity::fatal;
|
||||
}
|
||||
|
||||
bool Logger::LoggingCustom(const Severity severity) const
|
||||
{
|
||||
return (fInfos.severity <= severity &&
|
||||
fInfos.severity > Severity::nolog) ||
|
||||
return (fInfos.severity >= severity &&
|
||||
severity > Severity::nolog) ||
|
||||
fInfos.severity == Severity::fatal;
|
||||
}
|
||||
|
||||
|
@@ -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,33 +50,33 @@ namespace fair
|
||||
|
||||
enum class Severity : int
|
||||
{
|
||||
nolog,
|
||||
fatal,
|
||||
error,
|
||||
warn,
|
||||
state,
|
||||
info,
|
||||
debug,
|
||||
debug1,
|
||||
debug2,
|
||||
debug3,
|
||||
debug4,
|
||||
trace,
|
||||
nolog = 0,
|
||||
trace = 1,
|
||||
debug4 = 2,
|
||||
debug3 = 3,
|
||||
debug2 = 4,
|
||||
debug1 = 5,
|
||||
debug = 6,
|
||||
info = 7,
|
||||
state = 8,
|
||||
warn = 9,
|
||||
error = 10,
|
||||
fatal = 11,
|
||||
// backwards-compatibility:
|
||||
NOLOG = nolog,
|
||||
FATAL = fatal,
|
||||
ERROR = error,
|
||||
WARN = warn,
|
||||
warning = warn,
|
||||
WARNING = warn,
|
||||
STATE = state,
|
||||
INFO = info,
|
||||
DEBUG = debug,
|
||||
DEBUG1 = debug1,
|
||||
DEBUG2 = debug2,
|
||||
DEBUG3 = debug3,
|
||||
TRACE = trace,
|
||||
DEBUG4 = debug4,
|
||||
TRACE = trace
|
||||
DEBUG3 = debug3,
|
||||
DEBUG2 = debug2,
|
||||
DEBUG1 = debug1,
|
||||
DEBUG = debug,
|
||||
INFO = info,
|
||||
STATE = state,
|
||||
WARNING = warn,
|
||||
warning = warn,
|
||||
WARN = warn,
|
||||
ERROR = error,
|
||||
FATAL = fatal
|
||||
};
|
||||
|
||||
// verbosity levels:
|
||||
@@ -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
|
||||
|
Reference in New Issue
Block a user