TConsole::StartLoggingToFile: implement

This commit is contained in:
Lion Kortlepel 2022-04-28 13:44:39 +02:00
parent 5ded713b4b
commit 0761036c8c
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B
2 changed files with 6 additions and 11 deletions

View File

@ -39,4 +39,5 @@ private:
std::string mStateId;
const std::string mDefaultStateId = "BEAMMP_SERVER_CONSOLE";
std::ofstream mLogFileStream;
std::mutex mLogFileStreamMtx;
};

View File

@ -108,17 +108,11 @@ enum EscState {
void TConsole::StartLoggingToFile() {
mLogFileStream.open("Server.log");
Application::Console().Internal().on_write = [this](const std::string& ToWrite) {
// sanitize the string by removing all ANSI control codes (like color, etc)
std::string Sanitized;
Sanitized.reserve(ToWrite.size());
for (size_t i = 0; i < ToWrite.size(); ++i) {
if (i + 1 < ToWrite.size()
&& ToWrite[i] == 0x1b) { // starts ANSI escape sequence
if (ToWrite[i + 1] >= 0x40 || ToWrite[i + 1] <= 0x5F) {
}
}
mLogFileStream.write(ToWrite.c_str(), ToWrite.size());
};
// TODO: Sanitize by removing all ansi escape codes (vt100)
std::unique_lock Lock(mLogFileStreamMtx);
mLogFileStream.write(ToWrite.c_str(), ToWrite.size());
mLogFileStream.write("\n", 1);
mLogFileStream.flush();
};
}