| 233 | } |
| 234 | |
| 235 | void Log::Logger::ProcessLogMessage(LogType type, const StringView& msg, fmt_flax::memory_buffer& w) |
| 236 | { |
| 237 | const TimeSpan time = DateTime::Now() - LogStartTime; |
| 238 | fmt_flax::format(w, TEXT("[ {0} ]: [{1}] "), *time.ToString('a'), ToString(type)); |
| 239 | |
| 240 | // On Windows convert all '\n' into '\r\n' |
| 241 | #if PLATFORM_WINDOWS |
| 242 | const int32 msgLength = msg.Length(); |
| 243 | bool hasWindowsNewLine = false; |
| 244 | for (int32 i = 1; i < msgLength && !hasWindowsNewLine; i++) |
| 245 | hasWindowsNewLine |= msg.Get()[i - 1] != '\r' && msg.Get()[i] == '\n'; |
| 246 | if (hasWindowsNewLine) |
| 247 | { |
| 248 | Array<Char> msgStream; |
| 249 | msgStream.EnsureCapacity(msgLength); |
| 250 | msgStream.Add(msg.Get()[0]); |
| 251 | for (int32 i = 1; i < msgLength; i++) |
| 252 | { |
| 253 | if (msg.Get()[i - 1] != '\r' && msg.Get()[i] == '\n') |
| 254 | msgStream.Add(TEXT('\r')); |
| 255 | msgStream.Add(msg.Get()[i]); |
| 256 | } |
| 257 | msgStream.Add(TEXT('\0')); |
| 258 | w.append(msgStream.Get(), (const Char*)(msgStream.Get() + msgStream.Count())); |
| 259 | //fmt_flax::format(w, TEXT("{}"), (const Char*)msgStream.Get()); |
| 260 | return; |
| 261 | } |
| 262 | #endif |
| 263 | |
| 264 | // Output raw message to the log |
| 265 | w.append(msg.Get(), msg.Get() + msg.Length()); |
| 266 | //fmt_flax::format(w, TEXT("{}"), msg); |
| 267 | } |
| 268 | |
| 269 | void Log::Logger::Write(LogType type, const StringView& msg) |
| 270 | { |