Add cycle methods and verylow verbosity (msg only)

This commit is contained in:
Alexey Rybalchenko 2018-05-09 14:43:53 +02:00
parent de02bd068f
commit ec1f7adf61
3 changed files with 128 additions and 12 deletions

View File

@ -147,10 +147,12 @@ const unordered_map<string, Verbosity> Logger::fVerbosityMap =
{ "high", Verbosity::high }, { "high", Verbosity::high },
{ "medium", Verbosity::medium }, { "medium", Verbosity::medium },
{ "low", Verbosity::low }, { "low", Verbosity::low },
{ "verylow", Verbosity::verylow },
{ "VERYHIGH", Verbosity::veryhigh }, { "VERYHIGH", Verbosity::veryhigh },
{ "HIGH", Verbosity::high }, { "HIGH", Verbosity::high },
{ "MEDIUM", Verbosity::medium }, { "MEDIUM", Verbosity::medium },
{ "LOW", Verbosity::low } { "LOW", Verbosity::low },
{ "VERYLOW", Verbosity::verylow }
}; };
const unordered_map<string, Severity> Logger::fSeverityMap = const unordered_map<string, Severity> Logger::fSeverityMap =
@ -161,16 +163,14 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
{ "ERROR", Severity::error }, { "ERROR", Severity::error },
{ "warn", Severity::warn }, { "warn", Severity::warn },
{ "WARN", Severity::warn }, { "WARN", Severity::warn },
{ "warning", Severity::warning }, { "warning", Severity::warn },
{ "WARNING", Severity::warning }, { "WARNING", Severity::warn },
{ "state", Severity::state }, { "state", Severity::state },
{ "STATE", Severity::state }, { "STATE", Severity::state },
{ "info", Severity::info }, { "info", Severity::info },
{ "INFO", Severity::info }, { "INFO", Severity::info },
{ "debug", Severity::debug }, { "debug", Severity::debug },
{ "DEBUG", Severity::debug }, { "DEBUG", Severity::debug },
{ "trace", Severity::trace },
{ "TRACE", Severity::trace },
{ "debug1", Severity::debug1 }, { "debug1", Severity::debug1 },
{ "DEBUG1", Severity::debug1 }, { "DEBUG1", Severity::debug1 },
{ "debug2", Severity::debug2 }, { "debug2", Severity::debug2 },
@ -178,7 +178,9 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
{ "debug3", Severity::debug3 }, { "debug3", Severity::debug3 },
{ "DEBUG3", Severity::debug3 }, { "DEBUG3", Severity::debug3 },
{ "debug4", Severity::debug4 }, { "debug4", Severity::debug4 },
{ "DEBUG4", Severity::debug4 } { "DEBUG4", Severity::debug4 },
{ "trace", Severity::trace },
{ "TRACE", Severity::trace }
}; };
const array<string, 12> Logger::fSeverityNames = const array<string, 12> Logger::fSeverityNames =
@ -199,9 +201,10 @@ const array<string, 12> Logger::fSeverityNames =
} }
}; };
const array<string, 4> Logger::fVerbosityNames = const array<string, 5> Logger::fVerbosityNames =
{ {
{ {
"verylow",
"low", "low",
"medium", "medium",
"high", "high",
@ -253,6 +256,11 @@ void Logger::SetConsoleSeverity(const string& severityStr)
} }
} }
Severity Logger::GetConsoleSeverity()
{
return fConsoleSeverity;
}
void Logger::SetFileSeverity(const Severity severity) void Logger::SetFileSeverity(const Severity severity)
{ {
fFileSeverity = severity; fFileSeverity = severity;
@ -291,6 +299,82 @@ void Logger::SetCustomSeverity(const string& key, const string& severityStr)
} }
} }
auto Logger::CycleConsoleSeverityUp() -> void
{
size_t current = static_cast<size_t>(fConsoleSeverity);
if (current == fSeverityNames.size() - 1) {
SetConsoleSeverity(static_cast<Severity>(0));
} else {
SetConsoleSeverity(static_cast<Severity>(current + 1));
}
size_t newCurrent = static_cast<size_t>(fConsoleSeverity);
stringstream ss;
for (int i = 0; i < fSeverityNames.size(); ++i) {
ss << (i == newCurrent ? ">" : " ") << fSeverityNames.at(i) << (i == newCurrent ? "<" : " ");
}
ss << "\n\n";
cout << ss.str() << flush;
}
auto Logger::CycleConsoleSeverityDown() -> void
{
size_t current = static_cast<size_t>(fConsoleSeverity);
if (current == 0) {
SetConsoleSeverity(static_cast<Severity>(fSeverityNames.size() - 1));
} else {
SetConsoleSeverity(static_cast<Severity>(current - 1));
}
size_t newCurrent = static_cast<size_t>(fConsoleSeverity);
stringstream ss;
for (int i = 0; i < fSeverityNames.size(); ++i) {
ss << (i == newCurrent ? ">" : " ") << fSeverityNames.at(i) << (i == newCurrent ? "<" : " ");
}
ss << "\n\n";
cout << ss.str() << flush;
}
auto Logger::CycleVerbosityUp() -> void
{
size_t current = static_cast<size_t>(fVerbosity);
if (current == fVerbosityNames.size() - 1) {
SetVerbosity(static_cast<Verbosity>(0));
} else {
SetVerbosity(static_cast<Verbosity>(current + 1));
}
size_t newCurrent = static_cast<size_t>(fVerbosity);
stringstream ss;
for (int i = 0; i < fVerbosityNames.size(); ++i) {
ss << (i == newCurrent ? ">" : " ") << fVerbosityNames.at(i) << (i == newCurrent ? "<" : " ");
}
ss << "\n\n";
cout << ss.str() << flush;
}
auto Logger::CycleVerbosityDown() -> void
{
size_t current = static_cast<size_t>(fVerbosity);
if (current == 0) {
SetVerbosity(static_cast<Verbosity>(fVerbosityNames.size() - 1));
} else {
SetVerbosity(static_cast<Verbosity>(current - 1));
}
size_t newCurrent = static_cast<size_t>(fVerbosity);
stringstream ss;
for (int i = 0; i < fVerbosityNames.size(); ++i) {
ss << (i == newCurrent ? ">" : " ") << fVerbosityNames.at(i) << (i == newCurrent ? "<" : " ");
}
ss << "\n\n";
cout << ss.str() << flush;
}
void Logger::UpdateMinSeverity() void Logger::UpdateMinSeverity()
{ {
fMinSeverity = (fConsoleSeverity <= fFileSeverity) ? fFileSeverity : fConsoleSeverity; fMinSeverity = (fConsoleSeverity <= fFileSeverity) ? fFileSeverity : fConsoleSeverity;
@ -351,6 +435,11 @@ void Logger::SetVerbosity(const string& verbosityStr)
} }
} }
Verbosity Logger::GetVerbosity()
{
return fVerbosity;
}
void Logger::SetConsoleColor(const bool colored) void Logger::SetConsoleColor(const bool colored)
{ {
fColored = colored; fColored = colored;
@ -503,14 +592,20 @@ Logger& Logger::Log()
fBWOut << "[" << tsstr << "]"; fBWOut << "[" << tsstr << "]";
} }
fBWOut << "[" << fMetaData.severity_name << "]"; if (fVerbosity > Verbosity::verylow)
{
fBWOut << "[" << fMetaData.severity_name << "]";
}
if (fVerbosity == Verbosity::veryhigh) if (fVerbosity == Verbosity::veryhigh)
{ {
fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]"; fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]";
} }
fBWOut << " "; if (fVerbosity != Verbosity::verylow)
{
fBWOut << " ";
}
} }
if (fColored && (LoggingToConsole())) if (fColored && (LoggingToConsole()))
@ -525,14 +620,20 @@ Logger& Logger::Log()
fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]"; fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]";
} }
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]"; if (fVerbosity > Verbosity::verylow)
{
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
}
if (fVerbosity == Verbosity::veryhigh) if (fVerbosity == Verbosity::veryhigh)
{ {
fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]"; fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]";
} }
fColorOut << " "; if (fVerbosity != Verbosity::verylow)
{
fColorOut << " ";
}
} }
return *this; return *this;

View File

@ -59,17 +59,20 @@ enum class Severity : int
}; };
// verbosity levels: // verbosity levels:
// verylow: message
// low: [severity] message // low: [severity] message
// medium: [HH:MM:SS][severity] message // medium: [HH:MM:SS][severity] message
// high: [process name][HH:MM:SS:µS][severity] message // high: [process name][HH:MM:SS:µS][severity] message
// veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message // veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message
enum class Verbosity : int enum class Verbosity : int
{ {
verylow,
low, low,
medium, medium,
high, high,
veryhigh, veryhigh,
// backwards-compatibility: // backwards-compatibility:
VERYLOW = verylow,
LOW = low, LOW = low,
MEDIUM = medium, MEDIUM = medium,
HIGH = high, HIGH = high,
@ -116,6 +119,7 @@ class Logger
static void SetConsoleSeverity(const Severity severity); static void SetConsoleSeverity(const Severity severity);
static void SetConsoleSeverity(const std::string& severityStr); static void SetConsoleSeverity(const std::string& severityStr);
static Severity GetConsoleSeverity();
static void SetFileSeverity(const Severity severity); static void SetFileSeverity(const Severity severity);
static void SetFileSeverity(const std::string& severityStr); static void SetFileSeverity(const std::string& severityStr);
@ -123,11 +127,17 @@ class Logger
static void SetCustomSeverity(const std::string& key, const Severity severity); static void SetCustomSeverity(const std::string& key, const Severity severity);
static void SetCustomSeverity(const std::string& key, const std::string& severityStr); static void SetCustomSeverity(const std::string& key, const std::string& severityStr);
static void CycleConsoleSeverityUp();
static void CycleConsoleSeverityDown();
static void CycleVerbosityUp();
static void CycleVerbosityDown();
static bool Logging(const Severity severity); static bool Logging(const Severity severity);
static bool Logging(const std::string& severityStr); static bool Logging(const std::string& severityStr);
static void SetVerbosity(const Verbosity verbosity); static void SetVerbosity(const Verbosity verbosity);
static void SetVerbosity(const std::string& verbosityStr); static void SetVerbosity(const std::string& verbosityStr);
static Verbosity GetVerbosity();
static void SetConsoleColor(const bool colored = true); static void SetConsoleColor(const bool colored = true);
@ -178,7 +188,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, 12> fSeverityNames;
static const std::array<std::string, 4> fVerbosityNames; static const std::array<std::string, 5> fVerbosityNames;
virtual ~Logger() noexcept(false); virtual ~Logger() noexcept(false);

View File

@ -39,6 +39,9 @@ void printAllVerbositiesWithSeverity(Severity sev)
{ {
Logger::SetConsoleSeverity(sev); Logger::SetConsoleSeverity(sev);
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'verylow' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::verylow);
printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'low' verbosity..." << endl; cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'low' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::low); Logger::SetVerbosity(Verbosity::low);
printEverySeverity(); printEverySeverity();
@ -57,6 +60,8 @@ void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
{ {
Logger::SetConsoleSeverity(sev); Logger::SetConsoleSeverity(sev);
Logger::SetVerbosity(Verbosity::verylow);
printEverySeverity();
Logger::SetVerbosity(Verbosity::low); Logger::SetVerbosity(Verbosity::low);
printEverySeverity(); printEverySeverity();
Logger::SetVerbosity(Verbosity::medium); Logger::SetVerbosity(Verbosity::medium);