summaryrefslogtreecommitdiff
path: root/Runtime/Debug/Log.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-01 12:10:29 +0800
committerchai <chaifix@163.com>2021-11-01 12:10:29 +0800
commit44d6c41e5e586572de08c72c358aed9100a30353 (patch)
treea3dee8cbb9f7181c88464b31f231a264c570acd4 /Runtime/Debug/Log.cpp
parent78417f6cdedfcf60c8ca437190975644e942e01f (diff)
*log
Diffstat (limited to 'Runtime/Debug/Log.cpp')
-rw-r--r--Runtime/Debug/Log.cpp164
1 files changed, 92 insertions, 72 deletions
diff --git a/Runtime/Debug/Log.cpp b/Runtime/Debug/Log.cpp
index c92bdc8..c44d7af 100644
--- a/Runtime/Debug/Log.cpp
+++ b/Runtime/Debug/Log.cpp
@@ -3,6 +3,7 @@
#include <iostream>
#include <ctime>
#include <unordered_set>
+#include <stdarg.h>
using namespace std;
@@ -30,105 +31,124 @@ const std::string currentDateTime() {
return buf;
}
-void log_open_tag(std::string tag)
-{
- s_OpenTags.insert(tag);
+static void SetOutputColor(int i) {
+ if (s_ConsoleHandle == 0) {
+ s_ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
+ }
+ if (i == 0) {
+ SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
+ }
+ else if(i == 1) {
+ SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
+ }
+ else {
+ SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_INTENSITY);
+ }
}
-// https://stackoverflow.com/questions/4053837/colorizing-text-in-the-console-with-c
-// https://en.wikipedia.org/wiki/ANSI_escape_code#Windows_and_DOS
-// https://stackoverflow.com/questions/9262270/color-console-output-with-c-in-windows
-// https://blog.csdn.net/odaynot/article/details/7722240
-
-void log_info(std::string log)
+void log_error_null_param(const char* funcName, const char* param)
{
- Lock(s_Mutex) {
-#ifdef GAMELAB_WIN
- if (s_ConsoleHandle == 0) {
- s_ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
- }
- SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
- cout << currentDateTime() << " [Info] " << log << endl;
-#else
- cout << "\x1B[97m" << currentDateTime() << " [Info] " << log << "\x1B[0m" << endl;
-#endif
- }
-}
-
-void log_warning(std::string log)
-{
- Lock(s_Mutex) {
-#ifdef GAMELAB_WIN
- if (s_ConsoleHandle == 0) {
- s_ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
- }
- SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
- cout << currentDateTime() << " [Warning] " << log << endl;
-#else
- cout << "\x1B[93m" << currentDateTime() << " [Warning] " << log << "\x1B[0m" << endl;
-#endif
- }
+ log_error("Null parameter in %s called %s", funcName, param);
}
-void log_error(std::string log)
+void log_open_tag(const char* tag)
{
- Lock(s_Mutex) {
-#ifdef GAMELAB_WIN
- if (s_ConsoleHandle == 0) {
- s_ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
- }
- SetConsoleTextAttribute(s_ConsoleHandle, FOREGROUND_RED | FOREGROUND_INTENSITY);
- cout << currentDateTime() << " [Error] " << log << endl;
-#else
- cout << "\x1B[91m" << currentDateTime() << " [Error] " << log << "\x1B[0m" << endl;
-#endif
- }
+ s_OpenTags.insert(tag);
}
-void log_error_null_param(std::string funcName, std::string param)
+void log_info(const char* fmt, ...)
{
- log_error("Null parameter in " + funcName + " called " + param);
+ Lock(s_Mutex) {
+ SetOutputColor(0);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Info] ", currentDateTime().c_str());
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
-void log_info(string tag, std::string log)
+void log_warning(const char* fmt, ...)
{
- if (s_OpenTags.count(tag) <= 0)
- return;
- log_info("[" + tag + "] " + log);
+ Lock(s_Mutex) {
+ SetOutputColor(1);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Warning] ", currentDateTime().c_str());
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
-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_error(const char* fmt, ...)
{
+ Lock(s_Mutex) {
+ SetOutputColor(2);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Error] ", currentDateTime().c_str());
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
-void log_warning(std::string log)
+void log_info_tag(const char* tag, const char* fmt, ...)
{
+ Lock(s_Mutex) {
+ SetOutputColor(0);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Info] %s ", currentDateTime().c_str(), tag);
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
-void log_error(std::string log)
+void log_warning_tag(const char* tag, const char* fmt, ...)
{
+ Lock(s_Mutex) {
+ SetOutputColor(1);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Warning] %s ", currentDateTime().c_str(), tag);
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
-void log_error_null_param(std::string funcName, std::string param)
+void log_error_tag(const char* tag, const char* fmt, ...)
{
+ Lock(s_Mutex) {
+ SetOutputColor(2);
+ va_list pArgs = NULL;
+ va_start(pArgs, fmt);
+ printf("%s [Error] %s ", currentDateTime().c_str(), tag);
+ vprintf(fmt, pArgs);
+ printf("\n");
+ va_end(pArgs);
+ }
}
+#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
+void log_open_tag(const char* tag) {}
+void log_info(const char* log, ...) {}
+void log_warning(const char* log, ...) {}
+void log_error(const char* log, ...) {}
+void log_info(const char* tag, const char* log, ...) {}
+void log_warning(const char* tag, const char* log, ...) {}
+void log_error(const char* tag, const char* log, ...) {}
+#endif \ No newline at end of file