]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/logger.cpp
Merge tag 'v2.0.25' into master.
[user/henk/code/inspircd.git] / src / logger.cpp
index bf4ef582a5d7dede6fb424ae6e33bf21120eb6e5..6fa972c739228621579a4c3ef5e9bd74ac9337fa 100644 (file)
@@ -50,8 +50,7 @@
  */
 
 const char LogStream::LogHeader[] =
-       "Log started for " INSPIRCD_VERSION " (" INSPIRCD_REVISION ", " MODULE_INIT_STR ")"
-       " - compiled on " INSPIRCD_SYSTEM;
+       "Log started for " INSPIRCD_VERSION " (" MODULE_INIT_STR ")";
 
 LogManager::LogManager()
        : Logging(false)
@@ -120,7 +119,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
@@ -207,10 +206,9 @@ void LogManager::DelLogStream(LogStream* l)
 {
        for (std::map<std::string, std::vector<LogStream*> >::iterator i = LogStreams.begin(); i != LogStreams.end(); ++i)
        {
-               std::vector<LogStream*>::iterator it;
-               while ((it = std::find(i->second.begin(), i->second.end(), l)) != i->second.end())
+               while (stdalgo::erase(i->second, l))
                {
-                       i->second.erase(it);
+                       // Keep erasing while it exists
                }
        }
 
@@ -236,11 +234,8 @@ bool LogManager::DelLogType(const std::string &type, LogStream *l)
 
        if (i != LogStreams.end())
        {
-               std::vector<LogStream *>::iterator it = std::find(i->second.begin(), i->second.end(), l);
-
-               if (it != i->second.end())
+               if (stdalgo::erase(i->second, l))
                {
-                       i->second.erase(it);
                        if (i->second.size() == 0)
                        {
                                LogStreams.erase(i);
@@ -292,7 +287,7 @@ void LogManager::Log(const std::string &type, LogLevel loglevel, const std::stri
 
        for (std::map<LogStream *, std::vector<std::string> >::iterator gi = GlobalLogStreams.begin(); gi != GlobalLogStreams.end(); ++gi)
        {
-               if (std::find(gi->second.begin(), gi->second.end(), type) != gi->second.end())
+               if (stdalgo::isin(gi->second, type))
                {
                        continue;
                }
@@ -313,8 +308,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)
 {
 }
 
@@ -326,7 +323,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);
        }