]> git.lizzy.rs Git - minetest.git/blobdiff - src/log.cpp
Translated using Weblate (Russian)
[minetest.git] / src / log.cpp
index 589cfd909806ee7ba6be55d720c6f06ba486a6bf..30344b4dfda86d60339a6e199b3975ed7ad5fec4 100644 (file)
@@ -223,14 +223,14 @@ void Logger::setLevelSilenced(LogLevel lev, bool silenced)
 
 void Logger::registerThread(const std::string &name)
 {
-       threadid_t id = thr_get_current_thread_id();
+       std::thread::id id = std::this_thread::get_id();
        MutexAutoLock lock(m_mutex);
        m_thread_names[id] = name;
 }
 
 void Logger::deregisterThread()
 {
-       threadid_t id = thr_get_current_thread_id();
+       std::thread::id id = std::this_thread::get_id();
        MutexAutoLock lock(m_mutex);
        m_thread_names.erase(id);
 }
@@ -251,11 +251,13 @@ const std::string Logger::getLevelLabel(LogLevel lev)
        return names[lev];
 }
 
+LogColor Logger::color_mode = LOG_COLOR_AUTO;
+
 const std::string Logger::getThreadName()
 {
-       std::map<threadid_t, std::string>::const_iterator it;
+       std::map<std::thread::id, std::string>::const_iterator it;
 
-       threadid_t id = thr_get_current_thread_id();
+       std::thread::id id = std::this_thread::get_id();
        it = m_thread_names.find(id);
        if (it != m_thread_names.end())
                return it->second;
@@ -308,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;
 }
 
 
@@ -347,13 +365,10 @@ void StringBuffer::push_back(char c)
                        flush(std::string(buffer, buffer_index));
                buffer_index = 0;
        } else {
-               int index = buffer_index;
-               buffer[index++] = c;
-               if (index >= BUFFER_LENGTH) {
+               buffer[buffer_index++] = c;
+               if (buffer_index >= BUFFER_LENGTH) {
                        flush(std::string(buffer, buffer_index));
                        buffer_index = 0;
-               } else {
-                       buffer_index = index;
                }
        }
 }