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 },
{ "medium", Verbosity::medium },
{ "low", Verbosity::low },
{ "verylow", Verbosity::verylow },
{ "VERYHIGH", Verbosity::veryhigh },
{ "HIGH", Verbosity::high },
{ "MEDIUM", Verbosity::medium },
{ "LOW", Verbosity::low }
{ "LOW", Verbosity::low },
{ "VERYLOW", Verbosity::verylow }
};
const unordered_map<string, Severity> Logger::fSeverityMap =
@ -161,16 +163,14 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
{ "ERROR", Severity::error },
{ "warn", Severity::warn },
{ "WARN", Severity::warn },
{ "warning", Severity::warning },
{ "WARNING", Severity::warning },
{ "warning", Severity::warn },
{ "WARNING", Severity::warn },
{ "state", Severity::state },
{ "STATE", Severity::state },
{ "info", Severity::info },
{ "INFO", Severity::info },
{ "debug", Severity::debug },
{ "DEBUG", Severity::debug },
{ "trace", Severity::trace },
{ "TRACE", Severity::trace },
{ "debug1", Severity::debug1 },
{ "DEBUG1", Severity::debug1 },
{ "debug2", Severity::debug2 },
@ -178,7 +178,9 @@ const unordered_map<string, Severity> Logger::fSeverityMap =
{ "debug3", Severity::debug3 },
{ "DEBUG3", Severity::debug3 },
{ "debug4", Severity::debug4 },
{ "DEBUG4", Severity::debug4 }
{ "DEBUG4", Severity::debug4 },
{ "trace", Severity::trace },
{ "TRACE", Severity::trace }
};
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",
"medium",
"high",
@ -253,6 +256,11 @@ void Logger::SetConsoleSeverity(const string& severityStr)
}
}
Severity Logger::GetConsoleSeverity()
{
return fConsoleSeverity;
}
void Logger::SetFileSeverity(const Severity 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()
{
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)
{
fColored = colored;
@ -503,15 +592,21 @@ Logger& Logger::Log()
fBWOut << "[" << tsstr << "]";
}
if (fVerbosity > Verbosity::verylow)
{
fBWOut << "[" << fMetaData.severity_name << "]";
}
if (fVerbosity == Verbosity::veryhigh)
{
fBWOut << "[" << fMetaData.file << ":" << fMetaData.line << ":" << fMetaData.func << "]";
}
if (fVerbosity != Verbosity::verylow)
{
fBWOut << " ";
}
}
if (fColored && (LoggingToConsole()))
{
@ -525,15 +620,21 @@ Logger& Logger::Log()
fColorOut << "[" << startColor(Color::fgCyan) << tsstr << endColor() << "]";
}
if (fVerbosity > Verbosity::verylow)
{
fColorOut << "[" << ColoredSeverityWriter(fMetaData.severity) << "]";
}
if (fVerbosity == Verbosity::veryhigh)
{
fColorOut << "[" << ColorOut(Color::fgBlue, fMetaData.file) << ":" << ColorOut(Color::fgYellow, fMetaData.line) << ":" << ColorOut(Color::fgBlue, fMetaData.func) << "]";
}
if (fVerbosity != Verbosity::verylow)
{
fColorOut << " ";
}
}
return *this;
}

View File

@ -59,17 +59,20 @@ enum class Severity : int
};
// verbosity levels:
// verylow: message
// low: [severity] message
// medium: [HH:MM:SS][severity] message
// high: [process name][HH:MM:SS:µS][severity] message
// veryhigh: [process name][HH:MM:SS:µS][severity][file:line:function] message
enum class Verbosity : int
{
verylow,
low,
medium,
high,
veryhigh,
// backwards-compatibility:
VERYLOW = verylow,
LOW = low,
MEDIUM = medium,
HIGH = high,
@ -116,6 +119,7 @@ class Logger
static void SetConsoleSeverity(const Severity severity);
static void SetConsoleSeverity(const std::string& severityStr);
static Severity GetConsoleSeverity();
static void SetFileSeverity(const Severity severity);
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 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 std::string& severityStr);
static void SetVerbosity(const Verbosity verbosity);
static void SetVerbosity(const std::string& verbosityStr);
static Verbosity GetVerbosity();
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, Severity> fSeverityMap;
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);

View File

@ -39,6 +39,9 @@ void printAllVerbositiesWithSeverity(Severity 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;
Logger::SetVerbosity(Verbosity::low);
printEverySeverity();
@ -57,6 +60,8 @@ void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
{
Logger::SetConsoleSeverity(sev);
Logger::SetVerbosity(Verbosity::verylow);
printEverySeverity();
Logger::SetVerbosity(Verbosity::low);
printEverySeverity();
Logger::SetVerbosity(Verbosity::medium);