#ifdef _DEBUG
inline char* getDateTime() {
static char nowtime[20];
time_t rawtime;
struct tm* ltime;
time(&rawtime);
ltime = localtime(&rawtime);
strftime(nowtime, 20, "%H:%M:%S", ltime);
return nowtime;
}
#define DBG_PRINTF(format,...) printf("%s <%05d><%s>\t" format"\n",getDateTime(),__LINE__, __FUNCTION__, ##__VA_ARGS__)
#else
#define DBG_PRINTF(format,...)
#endif
#include <iostream>
#include <Windows.h>
template <typename... Args>
void LogError(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
std::cout << outstr << std::endl;
free(outstr);
}
template <typename... Args>
void LogWarning(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
std::cout << outstr << std::endl;
free(outstr);
}
template <typename... Args>
void Log(const char* fmt, Args... args) {
size_t strsize = snprintf(nullptr, 0, fmt, args...) + 1;
char* outstr = (char*)malloc(strsize);
snprintf(outstr, strsize, fmt, args...);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
std::cout << outstr << std::endl;
free(outstr);
}
int main(int argn, char** argv)
{
LogError("%s", "LogError");
LogWarning("%s", "LogWarning");
Log("%s", "Log");
getchar();
return 0;
}