97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
#include <assert.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
#include <memory.h>
|
|
#include <time.h>
|
|
|
|
#include <Windows.h>
|
|
|
|
#include "utils/logger.h"
|
|
|
|
static FILE* s_logFileHandle = NULL;
|
|
static DWORD s_logOpenTime = 0;
|
|
|
|
void logWriteMsg(const char* msg)
|
|
{
|
|
DWORD dwCurrentTime = GetTickCount() - s_logOpenTime;
|
|
|
|
static char buffer[1024];
|
|
int len = sprintf(buffer, "%02lu:%02lu.%02lu: %s",
|
|
dwCurrentTime / 60000, dwCurrentTime / 1000 % 60, dwCurrentTime % 1000 / 10, msg);
|
|
|
|
if (s_logFileHandle)
|
|
{
|
|
fwrite(buffer, sizeof(char), len, s_logFileHandle);
|
|
fflush(s_logFileHandle);
|
|
}
|
|
}
|
|
|
|
static bool s_Initialized = false;
|
|
|
|
void Logger::Init()
|
|
{
|
|
s_logFileHandle = fopen("output.txt", "w");
|
|
assert(s_logFileHandle);
|
|
|
|
s_logOpenTime = GetTickCount();
|
|
|
|
s_Initialized = true;
|
|
}
|
|
|
|
void Logger::Shutdown()
|
|
{
|
|
if (s_logFileHandle)
|
|
{
|
|
fclose(s_logFileHandle);
|
|
s_logFileHandle = NULL;
|
|
}
|
|
}
|
|
|
|
void Logger::LogPrint(const char* msg, ...)
|
|
{
|
|
static char buffer[2048 * 2];
|
|
|
|
if (s_Initialized == false)
|
|
Logger::Init();
|
|
|
|
va_list args;
|
|
va_start(args, msg);
|
|
vsprintf(buffer, msg, args);
|
|
va_end(args);
|
|
|
|
strcat(buffer, "\n");
|
|
|
|
OutputDebugStringA(buffer);
|
|
|
|
// write to console
|
|
fwrite(buffer, sizeof(char), strlen(buffer), stdout);
|
|
|
|
logWriteMsg(buffer);
|
|
}
|
|
|
|
void Logger::Error(const char* msg, ...)
|
|
{
|
|
static char buffer[2048 * 2];
|
|
va_list args;
|
|
va_start(args, msg);
|
|
vsprintf(buffer, msg, args);
|
|
va_end(args);
|
|
|
|
strcat(buffer, "\n");
|
|
|
|
OutputDebugStringA(buffer);
|
|
|
|
// write to console
|
|
fwrite(buffer, sizeof(char), strlen(buffer), stdout);
|
|
|
|
logWriteMsg(buffer);
|
|
|
|
MessageBoxA(NULL, buffer, "Engine Error", MB_OK | MB_ICONERROR);
|
|
|
|
// if (IsDebuggerPresent())
|
|
// DebugBreak();
|
|
//else
|
|
exit(-1);
|
|
}
|