mirror of
https://github.com/SantaSpeen/BeamMP-Server.git
synced 2026-02-16 10:20:39 +00:00
TConsole::StartLoggingToFile: implement
This commit is contained in:
@@ -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();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user