]> 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 8bd28dde8f925191531f0ea0374da75a07affedb..d63d58915bacfe41a9f41f954d583aa459926695 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -11,8 +11,9 @@
  * ---------------------------------------------------
  */
 
+/* $Core: libIRCDfilelogger */
+
 #include "inspircd.h"
-#include <sstream>
 #include <fstream>
 #include "socketengine.h"
 #include "inspircd_se_config.h"
@@ -34,7 +35,7 @@ bool FileLogger::Readable()
        return false;
 }
     
-void FileLogger::HandleEvent(EventType et, int errornum)
+void FileLogger::HandleEvent(EventType, int)
 {
        WriteLogLine("");
        if (log)
@@ -100,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());
+       }
+}