diff options
Diffstat (limited to 'src/filelogger.cpp')
-rw-r--r-- | src/filelogger.cpp | 83 |
1 files changed, 6 insertions, 77 deletions
diff --git a/src/filelogger.cpp b/src/filelogger.cpp index 5c2757520..b0eb77310 100644 --- a/src/filelogger.cpp +++ b/src/filelogger.cpp @@ -19,89 +19,18 @@ #include "inspircd_se_config.h" #include "filelogger.h" -FileLogger::FileLogger(InspIRCd* Instance, FILE* logfile) -: ServerInstance(Instance), log(logfile), writeops(0) +FileLogStream::FileLogStream(InspIRCd *Instance, int loglevel, FileWriter *fw) + : LogStream(Instance, loglevel), f(fw) { - if (log) - { - Instance->SE->NonBlocking(fileno(log)); - SetFd(fileno(log)); - buffer.clear(); - } -} - -bool FileLogger::Readable() -{ - return false; -} - -void FileLogger::HandleEvent(EventType, int) -{ - WriteLogLine(""); - if (log) - ServerInstance->SE->DelFd(this); + ServerInstance->Logs->AddLoggerRef(f); } -void FileLogger::WriteLogLine(const std::string &line) +FileLogStream::~FileLogStream() { - if (line.length()) - buffer.append(line); - - if (log) - { - int written = fprintf(log,"%s",buffer.c_str()); -#ifdef WINDOWS - buffer.clear(); -#else - if ((written >= 0) && (written < (int)buffer.length())) - { - buffer.erase(0, buffer.length()); - ServerInstance->SE->AddFd(this); - } - else if (written == -1) - { - if (errno == EAGAIN) - ServerInstance->SE->AddFd(this); - } - else - { - /* Wrote the whole buffer, and no need for write callback */ - buffer.clear(); - } -#endif - if (writeops++ % 20) - { - fflush(log); - } - } + /* FileWriter is managed externally now */ + ServerInstance->Logs->DelLoggerRef(f); } -void FileLogger::Close() -{ - if (log) - { - ServerInstance->SE->Blocking(fileno(log)); - - if (buffer.size()) - fprintf(log,"%s",buffer.c_str()); - -#ifndef WINDOWS - ServerInstance->SE->DelFd(this); -#endif - - fflush(log); - fclose(log); - } - - buffer.clear(); -} - -FileLogger::~FileLogger() -{ - this->Close(); -} - - void FileLogStream::OnLog(int loglevel, const std::string &type, const std::string &text) { static char TIMESTR[26]; |