mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2025-07-03 00:05:34 +00:00
TConsole::StartLoggingToFile: implement
This commit is contained in:
parent
5ded713b4b
commit
0761036c8c
@ -39,4 +39,5 @@ private:
|
|||||||
std::string mStateId;
|
std::string mStateId;
|
||||||
const std::string mDefaultStateId = "BEAMMP_SERVER_CONSOLE";
|
const std::string mDefaultStateId = "BEAMMP_SERVER_CONSOLE";
|
||||||
std::ofstream mLogFileStream;
|
std::ofstream mLogFileStream;
|
||||||
|
std::mutex mLogFileStreamMtx;
|
||||||
};
|
};
|
||||||
|
@ -108,17 +108,11 @@ enum EscState {
|
|||||||
void TConsole::StartLoggingToFile() {
|
void TConsole::StartLoggingToFile() {
|
||||||
mLogFileStream.open("Server.log");
|
mLogFileStream.open("Server.log");
|
||||||
Application::Console().Internal().on_write = [this](const std::string& ToWrite) {
|
Application::Console().Internal().on_write = [this](const std::string& ToWrite) {
|
||||||
// sanitize the string by removing all ANSI control codes (like color, etc)
|
// TODO: Sanitize by removing all ansi escape codes (vt100)
|
||||||
std::string Sanitized;
|
std::unique_lock Lock(mLogFileStreamMtx);
|
||||||
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());
|
mLogFileStream.write(ToWrite.c_str(), ToWrite.size());
|
||||||
};
|
mLogFileStream.write("\n", 1);
|
||||||
|
mLogFileStream.flush();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user