]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/logger.h
Remove the Kiwi links from the readme.
[user/henk/code/inspircd.git] / include / logger.h
index 0f95ad873af0038c62273fd1b076a395c2129d8f..6af842b791b11384150c7677baac24b601a199be 100644 (file)
@@ -1,8 +1,13 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2014 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012-2013, 2017 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2010 Craig Edwards <brain@inspircd.org>
+ *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2008, 2012 Robin Burchell <robin+git@viroteck.net>
  *   Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
- *   Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -41,14 +46,18 @@ class CoreExport FileWriter
         */
        FILE* log;
 
-       /** Number of write operations that have occured
+       /** The number of write operations after which we should flush.
         */
-       int writeops;
+       unsigned int flush;
+
+       /** Number of write operations that have occurred
+        */
+       unsigned int writeops;
 
  public:
        /** The constructor takes an already opened logfile.
         */
-       FileWriter(FILE* logfile);
+       FileWriter(FILE* logfile, unsigned int flushcount);
 
        /** Write one or more preformatted log lines.
         * If the data cannot be written immediately,
@@ -87,9 +96,11 @@ class CoreExport FileWriter
 class CoreExport LogStream : public classbase
 {
  protected:
-       int loglvl;
+       LogLevel loglvl;
  public:
-       LogStream(int loglevel) : loglvl(loglevel)
+       static const char LogHeader[];
+
+       LogStream(LogLevel loglevel) : loglvl(loglevel)
        {
        }
 
@@ -101,21 +112,21 @@ class CoreExport LogStream : public classbase
        /** Changes the loglevel for this LogStream on-the-fly.
         * This is needed for -nofork. But other LogStreams could use it to change loglevels.
         */
-       void ChangeLevel(int lvl) { this->loglvl = lvl; }
+       void ChangeLevel(LogLevel lvl) { this->loglvl = lvl; }
 
        /** Called when there is stuff to log for this particular logstream. The derived class may take no action with it, or do what it
         * wants with the output, basically. loglevel and type are primarily for informational purposes (the level and type of the event triggered)
         * and msg is, of course, the actual message to log.
         */
-       virtual void OnLog(int loglevel, const std::string &type, const std::string &msg) = 0;
+       virtual void OnLog(LogLevel loglevel, const std::string &type, const std::string &msg) = 0;
 };
 
 typedef std::map<FileWriter*, int> FileLogMap;
 
-class CoreExport LogManager
+class CoreExport LogManager : public fakederef<LogManager>
 {
  private:
-       /** Lock variable, set to true when a log is in progress, which prevents further loggging from happening and creating a loop.
+       /** Lock variable, set to true when a log is in progress, which prevents further logging from happening and creating a loop.
         */
        bool Logging;
 
@@ -137,7 +148,6 @@ class CoreExport LogManager
        FileLogMap FileLogs;
 
  public:
-
        LogManager();
        ~LogManager();
 
@@ -197,7 +207,7 @@ class CoreExport LogManager
         */
        bool AddLogType(const std::string &type, LogStream *l, bool autoclose);
 
-       /** Removes a logstream from the core. After removal, it will not recieve further events.
+       /** Removes a logstream from the core. After removal, it will not receive further events.
         * If the LogStream was ever added with autoclose, it will be closed after this call (this means the pointer won't be valid anymore).
         */
        void DelLogStream(LogStream* l);
@@ -212,12 +222,12 @@ class CoreExport LogManager
         * @param loglevel Log message level (LOG_DEBUG, LOG_VERBOSE, LOG_DEFAULT, LOG_SPARSE, LOG_NONE)
         * @param msg The message to be logged (literal).
         */
-       void Log(const std::string &type, int loglevel, const std::string &msg);
+       void Log(const std::string &type, LogLevel loglevel, const std::string &msg);
 
        /** Logs an event, sending it to all LogStreams registered for the type.
         * @param type Log message type (ex: "USERINPUT", "MODULE", ...)
         * @param loglevel Log message level (LOG_DEBUG, LOG_VERBOSE, LOG_DEFAULT, LOG_SPARSE, LOG_NONE)
         * @param fmt The format of the message to be logged. See your C manual on printf() for details.
         */
-       void Log(const std::string &type, int loglevel, const char *fmt, ...) CUSTOM_PRINTF(4, 5);
+       void Log(const std::string &type, LogLevel loglevel, const char *fmt, ...) CUSTOM_PRINTF(4, 5);
 };