X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Flogger.cpp;h=e3e95632583b9600cf45d5fbe65ecaa4d65160f9;hb=3b595d39a50e38283768bc6ec8aeb9e73071224f;hp=61ac517c70342938cceab95175a1bf89378b1305;hpb=f71e6bf9cb41811f18864f5d4eecb26e29d03f25;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/logger.cpp b/src/logger.cpp index 61ac517c7..e3e956325 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -21,7 +21,6 @@ #include "inspircd.h" -#include "filelogger.h" /* * Suggested implementation... @@ -51,8 +50,8 @@ */ const char LogStream::LogHeader[] = - "Log started for " VERSION " (" REVISION ", " MODULE_INIT_STR ")" - " - compiled on " SYSTEM; + "Log started for " INSPIRCD_VERSION " (" MODULE_INIT_STR ")" + " - compiled on " INSPIRCD_SYSTEM; LogManager::LogManager() : Logging(false) @@ -121,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(tag->getInt("flush", 20, 1, INT_MAX))); logmap.insert(std::make_pair(target, fw)); } else @@ -208,10 +207,9 @@ void LogManager::DelLogStream(LogStream* l) { for (std::map >::iterator i = LogStreams.begin(); i != LogStreams.end(); ++i) { - std::vector::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 } } @@ -237,11 +235,8 @@ bool LogManager::DelLogType(const std::string &type, LogStream *l) if (i != LogStreams.end()) { - std::vector::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); @@ -293,7 +288,7 @@ void LogManager::Log(const std::string &type, LogLevel loglevel, const std::stri for (std::map >::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; } @@ -314,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) { } @@ -327,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); }