]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/filelogger.cpp
w00t br0ked it! :p
[user/henk/code/inspircd.git] / src / filelogger.cpp
index e22b4fdf4729a17c1e95e87e846b0562605e6409..d63d58915bacfe41a9f41f954d583aa459926695 100644 (file)
@@ -101,3 +101,38 @@ FileLogger::~FileLogger()
        this->Close();
 }
 
+
+void FileLogStream::OnLog(int loglevel, const std::string &type, const std::string &text)
+{
+       static char TIMESTR[26];
+       static time_t LAST = 0;
+
+       /* sanity check, just in case */
+       if (!ServerInstance->Config)
+               return;
+
+       /* If we were given -debug we output all messages, regardless of configured loglevel */
+       if ((loglevel < ServerInstance->Config->LogLevel) && !ServerInstance->Config->forcedebug)
+               return;
+
+       if (ServerInstance->Time() != LAST)
+       {
+               time_t local = ServerInstance->Time();
+               struct tm *timeinfo = localtime(&local);
+
+               strlcpy(TIMESTR,asctime(timeinfo),26);
+               TIMESTR[24] = ':';
+               LAST = ServerInstance->Time();
+       }
+
+       if (ServerInstance->Config->log_file && ServerInstance->Config->writelog)
+       {
+               std::string out = std::string(TIMESTR) + " " + text.c_str() + "\n";
+               this->f->WriteLogLine(out);
+       }
+
+       if (ServerInstance->Config->nofork)
+       {
+               printf("%s %s\n", TIMESTR, text.c_str());
+       }
+}