Adds logging level tag to log messages

This commit is contained in:
Sven Luthi committed 2021-01-20 13:01:33 +01:00
1 parent d2d4a21f94
commit 07812d62cd
2 files changed
+31 -23

No files matched your search

+28 -20
View File
@@ -58,69 +58,77 @@ void Logger::log(Level lvl, const char* msg) {
} }
Logger::Sink::Sink (const Level level, Logger& parent) : Logger::Sink::Sink (const Level level, Logger& parent) :
level(level), level_(level),
parent(parent), parent_(parent),
lineIsPrefixed(false) {} lineIsPrefixed_(false) {}
void Logger::Sink::ln ( const string& msg ) { void Logger::Sink::ln ( const string& msg ) {
ln(msg.c_str()); ln(msg.c_str());
} }
void Logger::Sink::ln ( const char* msg ) { void Logger::Sink::ln ( const char* msg ) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
// If line has already been started, abort it and start new one: // If line has already been started, abort it and start new one:
if(lineIsPrefixed) *parent.output << endl; if(lineIsPrefixed_) *parent_.output << endl;
prefixLine(true); prefixLine(true);
*parent.output << msg << endl; *parent_.output << msg << endl;
} }
} }
void Logger::Sink::prefixLine(bool resetToFalse) { void Logger::Sink::prefixLine(bool resetToFalse) {
if (!lineIsPrefixed) { if (!lineIsPrefixed_) {
*parent.output << Logger::genTimeStamp() << " "; const char* lvlString;
lineIsPrefixed = resetToFalse ? false : true; switch ( level_ )
{
case DEBUG: lvlString = "DEBUG"; break;
case INFO: lvlString = "INFO"; break;
case WARN: lvlString = "WARN"; break;
case FATAL: lvlString = "FATAL"; break;
}
*parent_.output << Logger::genTimeStamp() << " [" << lvlString << "] ";
lineIsPrefixed_ = resetToFalse ? false : true;
} }
} }
Logger::Sink& Logger::Sink::operator<<(const string& msg) { Logger::Sink& Logger::Sink::operator<<(const string& msg) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
prefixLine(); prefixLine();
*parent.output << msg; *parent_.output << msg;
} }
return *this; return *this;
} }
Logger::Sink& Logger::Sink::operator<<(const char* msg) { Logger::Sink& Logger::Sink::operator<<(const char* msg) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
prefixLine(); prefixLine();
*parent.output << msg; *parent_.output << msg;
} }
return *this; return *this;
} }
Logger::Sink& Logger::Sink::operator<<(const long msg) { Logger::Sink& Logger::Sink::operator<<(const long msg) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
prefixLine(); prefixLine();
*parent.output << msg; *parent_.output << msg;
} }
return *this; return *this;
} }
Logger::Sink& Logger::Sink::operator<<(const unsigned long msg) { Logger::Sink& Logger::Sink::operator<<(const unsigned long msg) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
prefixLine(); prefixLine();
*parent.output << msg; *parent_.output << msg;
} }
return *this; return *this;
} }
Logger::Sink& Logger::Sink::operator<<(const char character) { Logger::Sink& Logger::Sink::operator<<(const char character) {
if ( level >= parent.logLevel ) { if ( level_ >= parent_.logLevel ) {
switch(character) { switch(character) {
// COMMIT - End message line // COMMIT - End message line
case 0: case 0:
*parent.output << endl; *parent_.output << endl;
lineIsPrefixed = false; lineIsPrefixed_ = false;
break; break;
} }
} }
+3 -3
View File
@@ -23,9 +23,9 @@ class Logger {
class Sink { class Sink {
private: private:
bool lineIsPrefixed; bool lineIsPrefixed_;
Logger& parent; Logger& parent_;
const Logger::Level level; const Logger::Level level_;
void prefixLine(bool resetToFalse = false); void prefixLine(bool resetToFalse = false);
public: public:
Sink(const Level level, Logger& parent); Sink(const Level level, Logger& parent);