if (!noforkstream)
{
FileWriter* fw = new FileWriter(ServerInstance, stdout);
- noforkstream = new FileLogStream(ServerInstance, ServerInstance->Config->forcedebug ? DEBUG : ServerInstance->Config->LogLevel, fw);
+ noforkstream = new FileLogStream(ServerInstance, ServerInstance->Config->forcedebug ? DEBUG : DEFAULT, fw);
}
else
{
- noforkstream->ChangeLevel(ServerInstance->Config->forcedebug ? DEBUG : ServerInstance->Config->LogLevel);
+ noforkstream->ChangeLevel(ServerInstance->Config->forcedebug ? DEBUG : DEFAULT);
}
AddLogType("*", noforkstream, false);
}
FileWriter::FileWriter(InspIRCd* Instance, FILE* logfile)
: ServerInstance(Instance), log(logfile), writeops(0)
{
- if (log)
- {
- Instance->SE->NonBlocking(fileno(log));
- SetFd(fileno(log));
- buffer.clear();
- }
}
-bool FileWriter::Readable()
+void FileWriter::HandleEvent(EventType ev, int)
{
- return false;
-}
-
-void FileWriter::HandleEvent(EventType, int)
-{
- WriteLogLine("");
- if (log)
- {
- ServerInstance->SE->DelFd(this);
- }
}
void FileWriter::WriteLogLine(const std::string &line)
{
- 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
+ fprintf(log,"%s",line.c_str());
if (writeops++ % 20)
{
fflush(log);
{
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();
}
FileWriter::~FileWriter()
{
- this->Close();
}
+