Fix log file spam and limit size to 1GB

#2980
This commit is contained in:
Wojtek Figat
2024-12-19 13:21:47 +01:00
parent 2175837f33
commit 12f3f00f9f

View File

@@ -25,6 +25,7 @@ namespace
bool IsWindowsSingleNewLineChar = false;
#endif
int LogTotalErrorsCnt = 0;
int32 LogTotalWriteSize = 0;
FileWriteStream* LogFile = nullptr;
CriticalSection LogLocker;
DateTime LogStartTime;
@@ -149,10 +150,17 @@ void Log::Logger::Write(const StringView& msg)
Platform::Log(msg);
// Write message to log file
if (LogAfterInit)
constexpr uint LogMaxWriteSize = 1 * 1024 * 1024; // 1GB
if (LogAfterInit && LogTotalWriteSize < LogMaxWriteSize)
{
LogTotalWriteSize += length;
LogFile->WriteBytes(ptr, length * sizeof(Char));
LogFile->WriteBytes(TEXT(PLATFORM_LINE_TERMINATOR), (ARRAY_COUNT(PLATFORM_LINE_TERMINATOR) - 1) * sizeof(Char));
if (LogTotalWriteSize >= LogMaxWriteSize)
{
StringView endMessage(TEXT("Trimming log file.\n\n"));
LogFile->WriteBytes(endMessage.Get(), endMessage.Length() * sizeof(Char));
}
#if LOG_ENABLE_AUTO_FLUSH
LogFile->Flush();
#endif