aboutsummaryrefslogtreecommitdiffstats
path: root/src/Utilities/Logger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Utilities/Logger.cpp')
-rw-r--r--src/Utilities/Logger.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/Utilities/Logger.cpp b/src/Utilities/Logger.cpp
new file mode 100644
index 0000000..333ae16
--- /dev/null
+++ b/src/Utilities/Logger.cpp
@@ -0,0 +1,48 @@
+#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
+} \ No newline at end of file