summaryrefslogtreecommitdiff
path: root/Editor/Utils/Log.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Editor/Utils/Log.cpp')
-rw-r--r--Editor/Utils/Log.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/Editor/Utils/Log.cpp b/Editor/Utils/Log.cpp
new file mode 100644
index 0000000..9ec7d42
--- /dev/null
+++ b/Editor/Utils/Log.cpp
@@ -0,0 +1,94 @@
+#include "log.h"
+#include <iostream>
+#include <ctime>
+#include <unordered_set>
+#include "HelperFuncs.h"
+
+using namespace std;
+
+//long g_LogTags = LogTag::All;
+unordered_set<string> s_OpenTags;
+
+#ifdef GAMELAB_DEBUG
+// https://stackoverflow.com/questions/997946/how-to-get-current-time-and-date-in-c
+// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
+const std::string currentDateTime() {
+ time_t now = time(0);
+ struct tm tstruct;
+ char buf[80];
+ tstruct = *localtime(&now);
+ // Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
+ // for more information about date/time format
+ strftime(buf, sizeof(buf), "%Y-%m-%d %X", &tstruct);
+
+ return buf;
+}
+
+void log_open_tag(std::string tag)
+{
+ s_OpenTags.insert(tag);
+}
+
+// https://stackoverflow.com/questions/4053837/colorizing-text-in-the-console-with-c
+
+void log_info(std::string log)
+{
+ cout << "\x1B[97m" << currentDateTime() << " [Info] " << log << "\033[0m" << endl;
+}
+
+void log_warning(std::string log)
+{
+ cout << "\x1B[93m" << currentDateTime() << " [Wanning] " << log << "\033[0m" << endl;
+}
+
+void log_error(std::string log)
+{
+ cout << "\x1B[91m" << currentDateTime() << " [Error] " << log << "\033[0m" << endl;
+}
+
+void log_error_null_param(std::string funcName, std::string param)
+{
+ log_error("Null parameter in " + funcName + " called " + param);
+}
+
+void log_info(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_info("[" + tag + "] " + log);
+}
+void log_warning(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_warning("[" + tag + "] " + log);
+}
+void log_error(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_error("[" + tag + "] " + log);
+}
+#else
+void log_open_tag(std::string tag) {}
+void log_info(std::string log)
+{
+}
+
+void log_warning(std::string log)
+{
+}
+
+void log_error(std::string log)
+{
+}
+
+void log_error_null_param(std::string funcName, std::string param)
+{
+}
+
+void log_info(string tag, std::string log) {}
+void log_warning(string tag, std::string log) {}
+void log_error(string tag, std::string log) {}
+
+#endif \ No newline at end of file