]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Initial totally untested logger implementation that does nothing.
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 9 Feb 2008 11:35:27 +0000 (11:35 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 9 Feb 2008 11:35:27 +0000 (11:35 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8856 e03df62e-2008-0410-955e-edbf42e46eb7

include/inspircd.h
include/logger.h
src/logger.cpp

index 71a809be9e12b9f5fc49f0ec4c2b13aa1fd0974e..cc474dbfbde7a58a8cd547653837bea10587e11c 100644 (file)
@@ -29,9 +29,6 @@
 #include <time.h>
 #include <stdarg.h>
 
-
-//#include <string>
-//#include <sstream>
 #include "inspircd_config.h"
 #include "uid.h"
 #include "users.h"
@@ -39,6 +36,7 @@
 #include "timer.h"
 #include "hashcomp.h"
 #include "typedefs.h"
+#include "logger.h"
 #include "usermanager.h"
 #include "socket.h"
 #include "ctables.h"
@@ -49,7 +47,6 @@
 #include "cull_list.h"
 #include "filelogger.h"
 #include "caller.h"
-//#include "inspsocket.h"
 #include "modules.h"
 #include "configreader.h"
 #include "inspstring.h"
index 5b8929d37d9a94274347fcd42eb89c325e10267e..1e043f4f1537bd83ec1dec94c416b4160f4b310b 100644 (file)
  * ---------------------------------------------------
  */
 
+#ifndef __LOGMANAGER_H
+#define __LOGMANAGER_H
+
+class CoreExport LogStream : public classbase
+{
+ private:
+       InspIRCd *ServerInstance;
+       std::string type;
+ public:
+       LogStream(InspIRCd *Instance, const std::string &type)
+       {
+               this->ServerInstance = Instance;
+               this->type = type;
+       }
+
+       virtual void OnLog(int loglevel, const std::string &msg);
+};
+
+class CoreExport LogManager : public classbase
+{
+ private:
+       InspIRCd *ServerInstance;
+       std::map<std::string, std::vector<LogStream *> > LogStreams;
+ public:
+       LogManager(InspIRCd *Instance)
+       {
+               ServerInstance = Instance;
+       }
+
+       bool AddLogType(const std::string &type, LogStream *l);
+       bool DelLogType(const std::string &type, LogStream *l);
+       void Log(const std::string &type, int loglevel, const std::string &msg);
+};
+
+#endif
index 690c1a5d9597e658da7f2e8ea7b6fd70ef5ecffe..458dcf5e0b9169595a4c64ecb7388beb75a25d85 100644 (file)
  *       can we accomplish this easily? I guess with a map of pre-loved logpaths, and a pointer of FILE *..
  * 
  */
+
+bool LogManager::AddLogType(const std::string &type, LogStream *l)
+{
+       std::map<std::string, std::vector<LogStream *> >::iterator i = LogStreams.find(type);
+
+       if (i != LogStreams.end())
+               i->second.push_back(l);
+       else
+       {
+               std::vector<LogStream *> v;
+               v.push_back(l);
+               LogStreams[type] = v;
+       }
+
+       return true;
+}
+
+bool LogManager::DelLogType(const std::string &type, LogStream *l)
+{
+       std::map<std::string, std::vector<LogStream *> >::iterator i = LogStreams.find(type);
+
+       if (i != LogStreams.end())
+       {
+               std::vector<LogStream *>::iterator it = i->second.begin();
+
+               while (it != i->second.end())
+               {
+                       if (*it == l)
+                       {
+                               i->second.erase(it);
+
+                               if (i->second.size() == 0)
+                               {
+                                       LogStreams.erase(i);
+                               }
+
+                               delete l;
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}
+
+void LogManager::Log(const std::string &type, int loglevel, const std::string &msg)
+{
+       std::map<std::string, std::vector<LogStream *> >::iterator i = LogStreams.find(type);
+
+       if (i != LogStreams.end())
+       {
+               std::vector<LogStream *>::iterator it = i->second.begin();
+
+               while (it != i->second.end())
+               {
+                       (*it)->OnLog(loglevel, msg);
+               }
+
+               return;
+       }
+
+       // blurp, no handler for this type
+       return;
+}
+
+