#include "Logger.hpp" /*void Logger::Log(const TelegramMessage& message, LogLevel logLevel) { Log("[" + message->from->username + "] " + message->text, logLevel); }*/ void Logger::Log(const string& inMsg, LogLevel logLevel) { string outMsg; #ifdef NDEBUG if (logLevel == LogLevel::lDEBUG) { // don't log debug messages in release mode return; } #endif // prefix message with time outMsg = "[" + NOW_STRING + "]"; // TODO: let at least some (ERROR, WARN) levels go to stderr, not stdout // prefix log level - TODO: allow filtering based on globally set level? switch (logLevel) { case LogLevel::lSTATUS: outMsg += " [STATUS] " + inMsg; break; case LogLevel::lDEBUG: outMsg += " [DEBUG] " + inMsg; break; case LogLevel::lINFO: outMsg += " [INFO] " + inMsg; break; case LogLevel::lWARN: outMsg += " [WARN] " + inMsg; break; case LogLevel::lERROR: outMsg += " [ERROR] " + inMsg; break; } Print(outMsg); } void Logger::Print(const string& msg) { // console output cout << msg << endl; // file output | TODO: Logger needs state for that - or at least needs to pretend to have one }