diff options
Diffstat (limited to 'Runtime/Debug/Log.cpp')
-rw-r--r-- | Runtime/Debug/Log.cpp | 164 |
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 |