Add 'alarm' and 'important' severities

This commit is contained in:
Alexey Rybalchenko 2021-09-10 11:15:00 +02:00
parent 13ebedca3d
commit eb58263d4d
7 changed files with 98 additions and 81 deletions

View File

@ -96,6 +96,8 @@ where severity level is one of the following:
"info", "info",
"state", "state",
"warn", "warn",
"important",
"alarm",
"error", "error",
"fatal", "fatal",
``` ```

View File

@ -63,33 +63,35 @@ const unordered_map<string, Verbosity> Logger::fVerbosityMap =
const unordered_map<string, Severity> Logger::fSeverityMap = const unordered_map<string, Severity> Logger::fSeverityMap =
{ {
{ "nolog", Severity::nolog }, { "nolog", Severity::nolog },
{ "NOLOG", Severity::nolog }, { "NOLOG", Severity::nolog },
{ "error", Severity::error }, { "error", Severity::error },
{ "ERROR", Severity::error }, { "ERROR", Severity::error },
{ "warn", Severity::warn }, { "alarm", Severity::alarm },
{ "WARN", Severity::warn }, { "important", Severity::important },
{ "warning", Severity::warn }, { "warn", Severity::warn },
{ "WARNING", Severity::warn }, { "WARN", Severity::warn },
{ "state", Severity::state }, { "warning", Severity::warn },
{ "STATE", Severity::state }, { "WARNING", Severity::warn },
{ "info", Severity::info }, { "state", Severity::state },
{ "INFO", Severity::info }, { "STATE", Severity::state },
{ "debug", Severity::debug }, { "info", Severity::info },
{ "DEBUG", Severity::debug }, { "INFO", Severity::info },
{ "debug1", Severity::debug1 }, { "debug", Severity::debug },
{ "DEBUG1", Severity::debug1 }, { "DEBUG", Severity::debug },
{ "debug2", Severity::debug2 }, { "debug1", Severity::debug1 },
{ "DEBUG2", Severity::debug2 }, { "DEBUG1", Severity::debug1 },
{ "debug3", Severity::debug3 }, { "debug2", Severity::debug2 },
{ "DEBUG3", Severity::debug3 }, { "DEBUG2", Severity::debug2 },
{ "debug4", Severity::debug4 }, { "debug3", Severity::debug3 },
{ "DEBUG4", Severity::debug4 }, { "DEBUG3", Severity::debug3 },
{ "trace", Severity::trace }, { "debug4", Severity::debug4 },
{ "TRACE", Severity::trace } { "DEBUG4", Severity::debug4 },
{ "trace", Severity::trace },
{ "TRACE", Severity::trace }
}; };
const array<string, 12> Logger::fSeverityNames = const array<string, 14> Logger::fSeverityNames =
{ {
{ {
"NOLOG", "NOLOG",
@ -102,6 +104,8 @@ const array<string, 12> Logger::fSeverityNames =
"INFO", "INFO",
"STATE", "STATE",
"WARN", "WARN",
"IMPORTANT",
"ALARM",
"ERROR", "ERROR",
"FATAL" "FATAL"
} }
@ -278,19 +282,21 @@ void Logger::LogEmptyLine()
string Logger::GetColoredSeverityString(Severity severity) string Logger::GetColoredSeverityString(Severity severity)
{ {
switch (severity) { switch (severity) {
case Severity::nolog: return "\033[01;39mNOLOG\033[0m"; break; case Severity::nolog: return "\033[01;39mNOLOG\033[0m"; break;
case Severity::fatal: return "\033[01;31mFATAL\033[0m"; break; case Severity::fatal: return "\033[01;31mFATAL\033[0m"; break;
case Severity::error: return "\033[01;31mERROR\033[0m"; break; case Severity::error: return "\033[01;31mERROR\033[0m"; break;
case Severity::warn: return "\033[01;33mWARN\033[0m"; break; case Severity::alarm: return "\033[01;33mALARM\033[0m"; break;
case Severity::state: return "\033[01;35mSTATE\033[0m"; break; case Severity::important: return "\033[01;32mIMPORTANT\033[0m"; break;
case Severity::info: return "\033[01;32mINFO\033[0m"; break; case Severity::warn: return "\033[01;33mWARN\033[0m"; break;
case Severity::debug: return "\033[01;34mDEBUG\033[0m"; break; case Severity::state: return "\033[01;35mSTATE\033[0m"; break;
case Severity::debug1: return "\033[01;34mDEBUG1\033[0m"; break; case Severity::info: return "\033[01;32mINFO\033[0m"; break;
case Severity::debug2: return "\033[01;34mDEBUG2\033[0m"; break; case Severity::debug: return "\033[01;34mDEBUG\033[0m"; break;
case Severity::debug3: return "\033[01;34mDEBUG3\033[0m"; break; case Severity::debug1: return "\033[01;34mDEBUG1\033[0m"; break;
case Severity::debug4: return "\033[01;34mDEBUG4\033[0m"; break; case Severity::debug2: return "\033[01;34mDEBUG2\033[0m"; break;
case Severity::trace: return "\033[01;36mTRACE\033[0m"; break; case Severity::debug3: return "\033[01;34mDEBUG3\033[0m"; break;
default: return "UNKNOWN"; break; case Severity::debug4: return "\033[01;34mDEBUG4\033[0m"; break;
case Severity::trace: return "\033[01;36mTRACE\033[0m"; break;
default: return "UNKNOWN"; break;
} }
} }

View File

@ -61,9 +61,13 @@ enum class Severity : int
info = 7, info = 7,
state = 8, state = 8,
warn = 9, warn = 9,
error = 10, important = 10,
fatal = 11, alarm = 11,
// backwards-compatibility: error = 12,
fatal = 13,
// aliases
warning = warn,
// backwards-compatibility
NOLOG = nolog, NOLOG = nolog,
TRACE = trace, TRACE = trace,
DEBUG4 = debug4, DEBUG4 = debug4,
@ -74,7 +78,6 @@ enum class Severity : int
INFO = info, INFO = info,
STATE = state, STATE = state,
WARNING = warn, WARNING = warn,
warning = warn,
WARN = warn, WARN = warn,
ERROR = error, ERROR = error,
FATAL = fatal FATAL = fatal
@ -319,7 +322,7 @@ class Logger
static const std::unordered_map<std::string, Verbosity> fVerbosityMap; static const std::unordered_map<std::string, Verbosity> fVerbosityMap;
static const std::unordered_map<std::string, Severity> fSeverityMap; static const std::unordered_map<std::string, Severity> fSeverityMap;
static const std::array<std::string, 12> fSeverityNames; static const std::array<std::string, 14> fSeverityNames;
static const std::array<std::string, 9> fVerbosityNames; static const std::array<std::string, 9> fVerbosityNames;
// protection for use after static destruction took place // protection for use after static destruction took place

View File

@ -38,7 +38,7 @@ int main()
Logger::SetConsoleSeverity(Severity::fatal); Logger::SetConsoleSeverity(Severity::fatal);
cout << "initial severity >" << Logger::GetConsoleSeverity() << "<" << endl << endl; cout << "initial severity >" << Logger::GetConsoleSeverity() << "<" << endl << endl;
array<Severity, 12> severitiesUp{{ Severity::nolog, Severity::trace, Severity::debug4, Severity::debug3, Severity::debug2, Severity::debug1, Severity::debug, Severity::info, Severity::state, Severity::warn, Severity::error, Severity::fatal }}; array<Severity, 14> severitiesUp{{ Severity::nolog, Severity::trace, Severity::debug4, Severity::debug3, Severity::debug2, Severity::debug1, Severity::debug, Severity::info, Severity::state, Severity::warn, Severity::important, Severity::alarm, Severity::error, Severity::fatal }};
#ifdef FAIR_MIN_SEVERITY #ifdef FAIR_MIN_SEVERITY
for (unsigned int i = static_cast<int>(Severity::FAIR_MIN_SEVERITY); i < severitiesUp.size(); ++i) { for (unsigned int i = static_cast<int>(Severity::FAIR_MIN_SEVERITY); i < severitiesUp.size(); ++i) {
#else #else
@ -57,7 +57,7 @@ int main()
Logger::SetConsoleSeverity(Severity::fatal); Logger::SetConsoleSeverity(Severity::fatal);
cout << "initial severity >" << Logger::GetConsoleSeverity() << "<" << endl << endl; cout << "initial severity >" << Logger::GetConsoleSeverity() << "<" << endl << endl;
array<Severity, 12> severitiesDown{{ Severity::error, Severity::warn, Severity::state, Severity::info, Severity::debug, Severity::debug1, Severity::debug2, Severity::debug3, Severity::debug4, Severity::trace, Severity::nolog, Severity::fatal }}; array<Severity, 14> severitiesDown{{ Severity::error, Severity::alarm, Severity::important, Severity::warn, Severity::state, Severity::info, Severity::debug, Severity::debug1, Severity::debug2, Severity::debug3, Severity::debug4, Severity::trace, Severity::nolog, Severity::fatal }};
#ifdef FAIR_MIN_SEVERITY #ifdef FAIR_MIN_SEVERITY
for (unsigned int i = 0; i < severitiesDown.size() - static_cast<int>(Severity::FAIR_MIN_SEVERITY) - 1; ++i) { for (unsigned int i = 0; i < severitiesDown.size() - static_cast<int>(Severity::FAIR_MIN_SEVERITY) - 1; ++i) {
#else #else

View File

@ -17,18 +17,20 @@ void printEverySeverity()
{ {
static int i = 1; static int i = 1;
LOG(nolog) << "nolog message, counter: " << i++; LOG(nolog) << "nolog message, counter: " << i++;
LOG(trace) << "trace message, counter: " << i++; LOG(trace) << "trace message, counter: " << i++;
LOG(debug4) << "debug4 message, counter: " << i++; LOG(debug4) << "debug4 message, counter: " << i++;
LOG(debug3) << "debug3 message, counter: " << i++; LOG(debug3) << "debug3 message, counter: " << i++;
LOG(debug2) << "debug2 message, counter: " << i++; LOG(debug2) << "debug2 message, counter: " << i++;
LOG(debug1) << "debug1 message, counter: " << i++; LOG(debug1) << "debug1 message, counter: " << i++;
LOG(debug) << "debug message, counter: " << i++; LOG(debug) << "debug message, counter: " << i++;
LOG(info) << "info message, counter: " << i++; LOG(info) << "info message, counter: " << i++;
LOG(state) << "state message, counter: " << i++; LOG(state) << "state message, counter: " << i++;
LOG(warn) << "warning message, counter: " << i++; LOG(warn) << "warning message, counter: " << i++;
LOG(error) << "error message, counter: " << i++; LOG(important) << "important message, counter: " << i++;
LOG(fatal) << "fatal message, counter: " << i++; LOG(alarm) << "alarm message, counter: " << i++;
LOG(error) << "error message, counter: " << i++;
LOG(fatal) << "fatal message, counter: " << i++;
} }
void printAllVerbositiesWithSeverity(Severity sev) void printAllVerbositiesWithSeverity(Severity sev)

View File

@ -13,17 +13,19 @@ using namespace fair;
void printEverySeverity() void printEverySeverity()
{ {
LOG(nolog) << "nolog message, counter: "; LOG(nolog) << "nolog message, counter: ";
LOG(trace) << "trace message, counter: "; LOG(trace) << "trace message, counter: ";
LOG(debug4) << "debug4 message, counter: "; LOG(debug4) << "debug4 message, counter: ";
LOG(debug3) << "debug3 message, counter: "; LOG(debug3) << "debug3 message, counter: ";
LOG(debug2) << "debug2 message, counter: "; LOG(debug2) << "debug2 message, counter: ";
LOG(debug1) << "debug1 message, counter: "; LOG(debug1) << "debug1 message, counter: ";
LOG(debug) << "debug message, counter: "; LOG(debug) << "debug message, counter: ";
LOG(info) << "info message, counter: " ; LOG(info) << "info message, counter: ";
LOG(state) << "state message, counter: "; LOG(state) << "state message, counter: ";
LOG(warn) << "warning message, counter: "; LOG(warn) << "warning message, counter: ";
LOG(error) << "error message, counter: "; LOG(important) << "important message, counter: ";
LOG(alarm) << "alarm message, counter: ";
LOG(error) << "error message, counter: ";
} }
void silentlyPrintAllVerbositiesWithSeverity(Severity sev) void silentlyPrintAllVerbositiesWithSeverity(Severity sev)

View File

@ -20,18 +20,20 @@ using namespace fair::logger::test;
uint32_t printEverySeverity(uint32_t i) uint32_t printEverySeverity(uint32_t i)
{ {
LOG(nolog) << "nolog message, counter: " << i++; LOG(nolog) << "nolog message, counter: " << i++;
LOG(trace) << "trace message, counter: " << i++; LOG(trace) << "trace message, counter: " << i++;
LOG(debug4) << "debug4 message, counter: " << i++; LOG(debug4) << "debug4 message, counter: " << i++;
LOG(debug3) << "debug3 message, counter: " << i++; LOG(debug3) << "debug3 message, counter: " << i++;
LOG(debug2) << "debug2 message, counter: " << i++; LOG(debug2) << "debug2 message, counter: " << i++;
LOG(debug1) << "debug1 message, counter: " << i++; LOG(debug1) << "debug1 message, counter: " << i++;
LOG(debug) << "debug message, counter: " << i++; LOG(debug) << "debug message, counter: " << i++;
LOG(info) << "info message, counter: " << i++; LOG(info) << "info message, counter: " << i++;
LOG(state) << "state message, counter: " << i++; LOG(state) << "state message, counter: " << i++;
LOG(warn) << "warning message, counter: " << i++; LOG(warn) << "warning message, counter: " << i++;
LOG(error) << "error message, counter: " << i++; LOG(important) << "important message, counter: " << i++;
LOG(fatal) << "fatal message, counter: " << i++; LOG(alarm) << "alarm message, counter: " << i++;
LOG(error) << "error message, counter: " << i++;
LOG(fatal) << "fatal message, counter: " << i++;
return i; return i;
} }
@ -45,7 +47,7 @@ void CheckSeverity(Severity severity)
for (uint32_t i = 0; i < Logger::fSeverityNames.size(); ++i) { for (uint32_t i = 0; i < Logger::fSeverityNames.size(); ++i) {
if (sev == Severity::nolog) { if (sev == Severity::nolog) {
if (i == 11) { if (i == static_cast<int>(fair::Severity::fatal)) {
if (!Logger::Logging(static_cast<Severity>(i))) { if (!Logger::Logging(static_cast<Severity>(i))) {
throw runtime_error(ToStr("expecting to be logging ", Logger::fSeverityNames.at(i), " during ", sev, ", but it is not.")); throw runtime_error(ToStr("expecting to be logging ", Logger::fSeverityNames.at(i), " during ", sev, ", but it is not."));
} }