| 117 | } |
| 118 | |
| 119 | void Log::Logger::Write(const StringView& msg, LogType type) |
| 120 | { |
| 121 | const auto ptr = msg.Get(); |
| 122 | const auto length = msg.Length(); |
| 123 | if (length <= 0) |
| 124 | return; |
| 125 | PROFILE_MEM(Engine); |
| 126 | |
| 127 | LogLocker.Lock(); |
| 128 | if (IsDuringLog) |
| 129 | { |
| 130 | LogLocker.Unlock(); |
| 131 | return; |
| 132 | } |
| 133 | IsDuringLog = true; |
| 134 | |
| 135 | // Send message to standard process output |
| 136 | if (CommandLine::Options.Std.IsTrue()) |
| 137 | { |
| 138 | #if PLATFORM_TEXT_IS_CHAR16 |
| 139 | StringAnsi ansi(msg); |
| 140 | ansi += PLATFORM_LINE_TERMINATOR; |
| 141 | printf("%s", ansi.Get()); |
| 142 | #else |
| 143 | std::wcout.write(ptr, length); |
| 144 | #if LOG_ENABLE_WINDOWS_SINGLE_NEW_LINE_CHAR |
| 145 | if (IsWindowsSingleNewLineChar) |
| 146 | std::wcout.write(TEXT("\n"), 1); // Github Actions show logs with duplicated new-line characters so skip \r |
| 147 | else |
| 148 | #endif |
| 149 | std::wcout.write(TEXT(PLATFORM_LINE_TERMINATOR), ARRAY_COUNT(PLATFORM_LINE_TERMINATOR) - 1); |
| 150 | #endif |
| 151 | } |
| 152 | |
| 153 | #if !BUILD_RELEASE |
| 154 | // Send message to platform logging |
| 155 | Platform::Log(msg, (int32)type); |
| 156 | #endif |
| 157 | |
| 158 | #if LOG_ENABLE_FILE |
| 159 | // Write message to log file |
| 160 | constexpr int32 LogMaxWriteSize = 1 * 1024 * 1024; // 1GB |
| 161 | if (LogAfterInit && LogTotalWriteSize < LogMaxWriteSize) |
| 162 | { |
| 163 | LogTotalWriteSize += length; |
| 164 | LogFile->WriteBytes(ptr, length * sizeof(Char)); |
| 165 | LogFile->WriteBytes(TEXT(PLATFORM_LINE_TERMINATOR), (ARRAY_COUNT(PLATFORM_LINE_TERMINATOR) - 1) * sizeof(Char)); |
| 166 | if (LogTotalWriteSize >= LogMaxWriteSize) |
| 167 | { |
| 168 | StringView endMessage(TEXT("Trimming log file.\n\n")); |
| 169 | LogFile->WriteBytes(endMessage.Get(), endMessage.Length() * sizeof(Char)); |
| 170 | } |
| 171 | #if LOG_ENABLE_AUTO_FLUSH |
| 172 | LogFile->Flush(); |
| 173 | #endif |
| 174 | } |
| 175 | #endif |
| 176 |
no test coverage detected