start work on new logger

This commit is contained in:
Lion Kortlepel 2022-04-05 22:27:45 +02:00
parent 1bab3276e9
commit d8c33c03ee
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B
3 changed files with 30 additions and 4 deletions

View File

@ -15,6 +15,7 @@ public:
void WriteRaw(const std::string& str);
void InitializeLuaConsole(TLuaEngine& Engine);
void BackupOldLog();
void StartLoggingToFile();
Commandline& Internal() { return mCommandline; }
private:
@ -37,4 +38,5 @@ private:
bool mFirstTime { true };
std::string mStateId;
const std::string mDefaultStateId = "BEAMMP_SERVER_CONSOLE";
std::ofstream mLogFileStream;
};

View File

@ -97,6 +97,32 @@ void TConsole::BackupOldLog() {
}
}
enum EscState {
None,
Escape,
FeSeqStart,
FeSeqMid,
SeqEnd
};
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());
EscState state;
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());
};
};
}
void TConsole::ChangeToLuaConsole(const std::string& LuaStateId) {
if (!mIsLuaConsole) {
if (!mLuaEngine) {

View File

@ -119,10 +119,8 @@ int BeamMPServerMain(MainArguments Arguments) {
}
Application::SetSubsystemStatus("Main", Application::Status::Starting);
bool Success = Application::Console().Internal().enable_write_to_file("Server.log");
if (!Success) {
beammp_error("unable to open file for writing: \"Server.log\"");
}
Application::Console().StartLoggingToFile();
SetupSignalHandlers();