Files
unease/engine/utils/logger.cpp
2025-02-28 04:43:17 +03:00

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);
}