Support user-defined verbosity formats

* Add `fair::Logger::DefineVerbosity(...)` API
* Add documentation to README
* Optionally support `BOOST_PRETTY_FUNCTION`
This commit is contained in:
Dennis Klein
2018-09-21 19:53:18 +02:00
committed by Alexey Rybalchenko
parent 7d0411b939
commit 3e1de0a17b
5 changed files with 409 additions and 62 deletions

View File

@@ -18,6 +18,9 @@
using namespace std;
using namespace fair;
namespace test
{
void printEverySeverity()
{
static int i = 1;
@@ -35,25 +38,39 @@ void printEverySeverity()
LOG(trace) << "trace message " << i++;
}
}
void printAllVerbositiesWithSeverity(Severity sev)
{
Logger::SetConsoleSeverity(sev);
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'verylow' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::verylow);
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'low' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::low);
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'medium' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::medium);
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'high' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::high);
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'veryhigh' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::veryhigh);
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'user1' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::user1);
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'user2' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::user2);
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'user3' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::user3);
test::printEverySeverity();
cout << endl << "cout: >>> testing severity '" << Logger::SeverityName(sev) << "' with 'user4' verbosity..." << endl;
Logger::SetVerbosity(Verbosity::user4);
test::printEverySeverity();
}
void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
@@ -61,21 +78,34 @@ void silentlyPrintAllVerbositiesWithSeverity(Severity sev)
Logger::SetConsoleSeverity(sev);
Logger::SetVerbosity(Verbosity::verylow);
printEverySeverity();
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::low);
printEverySeverity();
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::medium);
printEverySeverity();
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::high);
printEverySeverity();
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::veryhigh);
printEverySeverity();
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::user1);
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::user2);
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::user3);
test::printEverySeverity();
Logger::SetVerbosity(Verbosity::user4);
test::printEverySeverity();
}
int main()
{
Logger::SetConsoleColor(true);
auto spec = VerbositySpec::Make(VerbositySpec::Info::file_line_function,
VerbositySpec::Info::process_name,VerbositySpec::Info::process_name);
cout << "Defining custom verbosity \"user2\"" << endl;
Logger::DefineVerbosity(Verbosity::user2, spec);
cout << "cout: testing severities..." << endl;
printAllVerbositiesWithSeverity(Severity::trace);
@@ -133,7 +163,7 @@ int main()
cout << "cout: ----------------------------" << endl;
cout << "cout: open log file with severity 'error'" << endl;
Logger::InitFileSink(Severity::error, "test_log", true);
printEverySeverity();
test::printEverySeverity();
cout << "cout: closing log file" << endl;
Logger::RemoveFileSink();
@@ -158,7 +188,7 @@ int main()
cout << "CustomSink: \tfair::Severity severity: " << static_cast<int>(metadata.severity) << endl;
});
printEverySeverity();
test::printEverySeverity();
cout << endl << "cout: removing custom sink with info severity" << endl;
@@ -166,6 +196,5 @@ int main()
Logger::RemoveCustomSink("CustomSink");
Logger::RemoveCustomSink("bla");
return 0;
}