mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Move debug.txt after it grows too big (#8904)
Before opening the file for writing, its file size is tested. If it exceeds 50 MB, it is moved to debut.txt.1, otherwise the log is appended to the old messages. An old debut.txt.1 is removed if it already exists.
This commit is contained in:
parent
2c9edefde3
commit
36bfc67574
5 changed files with 33 additions and 11 deletions
26
src/log.cpp
26
src/log.cpp
|
@ -310,16 +310,32 @@ void Logger::logToOutputs(LogLevel lev, const std::string &combined,
|
|||
//// *LogOutput methods
|
||||
////
|
||||
|
||||
void FileLogOutput::open(const std::string &filename)
|
||||
void FileLogOutput::setFile(const std::string &filename, s64 file_size_max)
|
||||
{
|
||||
m_stream.open(filename.c_str(), std::ios::app | std::ios::ate);
|
||||
// Only move debug.txt if there is a valid maximum file size
|
||||
bool is_too_large = false;
|
||||
if (file_size_max > 0) {
|
||||
std::ifstream ifile(filename, std::ios::binary | std::ios::ate);
|
||||
is_too_large = ifile.tellg() > file_size_max;
|
||||
ifile.close();
|
||||
}
|
||||
|
||||
if (is_too_large) {
|
||||
std::string filename_secondary = filename + ".1";
|
||||
actionstream << "The log file grew too big; it is moved to " <<
|
||||
filename_secondary << std::endl;
|
||||
remove(filename_secondary.c_str());
|
||||
rename(filename.c_str(), filename_secondary.c_str());
|
||||
}
|
||||
m_stream.open(filename, std::ios::app | std::ios::ate);
|
||||
|
||||
if (!m_stream.good())
|
||||
throw FileNotGoodException("Failed to open log file " +
|
||||
filename + ": " + strerror(errno));
|
||||
m_stream << "\n\n"
|
||||
"-------------" << std::endl
|
||||
<< " Separator" << std::endl
|
||||
<< "-------------\n" << std::endl;
|
||||
"-------------" << std::endl <<
|
||||
" Separator" << std::endl <<
|
||||
"-------------\n" << std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue