]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/logger.cpp
Allow <log> tags to specify how often logs should be flushed.
[user/henk/code/inspircd.git] / src / logger.cpp
index 5b4a948eebe18638936df07a5bb4d0c0a5440e62..e3e95632583b9600cf45d5fbe65ecaa4d65160f9 100644 (file)
@@ -120,7 +120,7 @@ void LogManager::OpenFileLogs()
                        struct tm *mytime = gmtime(&time);
                        strftime(realtarget, sizeof(realtarget), target.c_str(), mytime);
                        FILE* f = fopen(realtarget, "a");
-                       fw = new FileWriter(f);
+                       fw = new FileWriter(f, static_cast<unsigned int>(tag->getInt("flush", 20, 1, INT_MAX)));
                        logmap.insert(std::make_pair(target, fw));
                }
                else
@@ -309,8 +309,10 @@ void LogManager::Log(const std::string &type, LogLevel loglevel, const std::stri
 }
 
 
-FileWriter::FileWriter(FILE* logfile)
-: log(logfile), writeops(0)
+FileWriter::FileWriter(FILE* logfile, unsigned int flushcount)
+       : log(logfile)
+       , flush(flushcount)
+       , writeops(0)
 {
 }
 
@@ -322,7 +324,7 @@ void FileWriter::WriteLogLine(const std::string &line)
 //             throw CoreException("FileWriter::WriteLogLine called with a closed logfile");
 
        fputs(line.c_str(), log);
-       if (++writeops % 20 == 0)
+       if (++writeops % flush == 0)
        {
                fflush(log);
        }