]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/logger.h
Correctly rewrite bans in 1.2 also, and make zline on nicks actually work.
[user/henk/code/inspircd.git] / include / logger.h
index 5b8929d37d9a94274347fcd42eb89c325e10267e..8f030b53b69221e19552ea4d63dcc98e896d2b8e 100644 (file)
  * ---------------------------------------------------
  */
 
+#ifndef __LOGMANAGER_H
+#define __LOGMANAGER_H
+
+class CoreExport LogStream : public classbase
+{
+ protected:
+       InspIRCd *ServerInstance;
+       int loglvl;
+ public:
+       LogStream(InspIRCd *Instance, int loglevel) : loglvl(loglevel)
+       {
+               this->ServerInstance = Instance;
+       }
+
+       virtual void OnLog(int loglevel, const std::string &type, const std::string &msg) { }
+};
+
+class CoreExport LogManager : public classbase
+{
+ private:
+       bool Logging; // true when logging, avoids recursion
+       InspIRCd *ServerInstance;
+       std::map<std::string, std::vector<LogStream *> > LogStreams;
+       std::vector<LogStream *> GlobalLogStreams; //holds all logstreams with a type of *
+ public:
+       LogManager(InspIRCd *Instance)
+       {
+               ServerInstance = Instance;
+               Logging = false;
+       }
+
+       void CloseLogs();
+       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);
+       void Log(const std::string &type, int loglevel, const char *fmt, ...);
+};
+
+#endif