Initial sources
This commit is contained in:
96
engine/utils/logger.cpp
Normal file
96
engine/utils/logger.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user