6 #include "../Common/server.h" 20 sprintf_s(timemsg, 999,
"%02i:%02i:%02i.%03i ", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
24 strcat_s(timemsg, 999,
"Warning: ");
27 strcat_s(timemsg, 999,
"DEBUG: ");
30 strcat_s(timemsg, 999,
"ERROR: ");
33 strcat_s(timemsg, 999,
"FATAL: ");
38 strcat_s(timemsg, 999, msg);
41 char errorcodemsg[99];
42 sprintf_s(errorcodemsg, 99,
" (0x%x)", errorCode);
43 strcat_s(timemsg, 999, errorcodemsg);
45 strcat_s(timemsg, 999,
"\n");
47 _write(
logfile, timemsg, static_cast<unsigned int>(strlen(timemsg)));
49 if (level == Level::Fatal || level == Level::Error || level == Level::Debug)
51 SErrorPacket errorPacket = SErrorPacket();
52 errorPacket.level = level;
53 sprintf_s(errorPacket.entry, 256,
"%.255s", msg);
54 errorPacket.stackTrace[0] = 0;
55 for (
int i = 4; i >= 0; i--)
57 strcat_s(errorPacket.stackTrace, 256,
callStack[i]);
58 strcat_s(errorPacket.stackTrace, 256,
"\n");
64 if (level == Level::Fatal)
69 std::stringstream buffer;
74 if (!DXUTIsWindowed())
76 DXUTToggleFullScreen();
77 SetCursor(LoadCursor(
nullptr, IDC_ARROW));
79 MessageBoxA(DXUTGetHWND(), msg,
"Fatal Exception", MB_ICONERROR | MB_OK);
88 for (
int i = 0; i < 4; i++)
97 for (
int i = 4; i >= 0; i--)
100 sprintf_s(line, 80,
" --> %s",
callStack[i]);
113 HANDLE h = FindFirstFile(searchkey, &fd);
114 if (h == INVALID_HANDLE_VALUE)
121 SystemTimeToFileTime(&st, &ft);
124 LONGLONG diffInTicks =
reinterpret_cast<LARGE_INTEGER*
>(&ft)->QuadPart - reinterpret_cast<LARGE_INTEGER*>(&fd.ftCreationTime)->QuadPart;
125 LONGLONG diffInMillis = diffInTicks / 10000;
126 LONGLONG diffInDays = diffInMillis / 86400000;
127 if (diffInDays > maxDays)
128 _wremove(fd.cFileName);
129 if (!FindNextFile(h, &fd))
141 sprintf_s(
fileName, 99,
"trace_%i-%02i-%02i-%02i%02i.log", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute);
142 _sopen_s(&
logfile,
fileName, _O_RDWR | _O_CREAT | _O_TEXT | _O_APPEND | _O_SEQUENTIAL, SH_DENYWR, S_IWRITE);
145 MessageBox(DXUTGetHWND(), L
"Could not open logfile for writing!", L
"Fatal Exception", MB_ICONERROR | MB_OK);
149 sprintf_s(msg, 99,
"Logger::ctor Opened logfile \"%s\"",
fileName);
152 for (
int i = 0; i < 5; i++)
158 Log(
"Logger::dtor Closing logfile...");
void SetNetworkingPointer(Networking *prmNetworking)
void Log(const char *msg, Level level=Info, int errorCode=0)
static void RemoveOldFiles(const wchar_t *searchkey, int maxDays)
void SendErrorReport(SErrorPacket *pData) const
void SendTraceFile(const char *fileContents) const
void AddToCallStack(const char *msg)