diff options
author | aquanight <aquanight@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-02-10 20:07:30 +0000 |
---|---|---|
committer | aquanight <aquanight@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-02-10 20:07:30 +0000 |
commit | 4965a1d6697565b1a72de31deaccfd93180bd403 (patch) | |
tree | dee80d010761a347665556b37b20d882556decec /include/filelogger.h | |
parent | ef9ab2301d8ee84dc9b68bcede435bc540d7243c (diff) |
Code for loading <log method=file> tags from config, but this still needs to be fit into the config reader stuff
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8885 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/filelogger.h')
-rw-r--r-- | include/filelogger.h | 73 |
1 files changed, 5 insertions, 68 deletions
diff --git a/include/filelogger.h b/include/filelogger.h index a2d63a0d9..3100761d9 100644 --- a/include/filelogger.h +++ b/include/filelogger.h @@ -14,6 +14,8 @@ #ifndef __LOG_H__ #define __LOG_H__ +#include "logger.h" + /** Debug levels for use with InspIRCd::Log() * */ enum DebugLevel @@ -29,79 +31,14 @@ enum DebugLevel /* Forward declaration -- required */ class InspIRCd; -/** This class implements a nonblocking log-writer. - * Most people writing an ircd give little thought to their disk - * i/o. On a congested system, disk writes can block for long - * periods of time (e.g. if the system is busy and/or swapping - * a lot). If we just use a blocking fprintf() call, this could - * block for undesirable amounts of time (half of a second through - * to whole seconds). We DO NOT want this, so we make our logfile - * nonblocking and hook it into the SocketEngine. - * NB: If the operating system does not support nonblocking file - * I/O (linux seems to, as does freebsd) this will default to - * blocking behaviour. - */ -class CoreExport FileLogger : public EventHandler -{ - protected: - /** The creator/owner of this object - */ - InspIRCd* ServerInstance; - /** The log file (fd is inside this somewhere, - * we get it out with fileno()) - */ - FILE* log; - /** Buffer of pending log lines to be written - */ - std::string buffer; - /** Number of write operations that have occured - */ - int writeops; - public: - /** The constructor takes an already opened logfile. - */ - FileLogger(InspIRCd* Instance, FILE* logfile); - /** This returns false, logfiles are writeable. - */ - virtual bool Readable(); - /** Handle pending write events. - * This will flush any waiting data to disk. - * If any data remains after the fprintf call, - * another write event is scheduled to write - * the rest of the data when possible. - */ - virtual void HandleEvent(EventType et, int errornum = 0); - /** Write one or more preformatted log lines. - * If the data cannot be written immediately, - * this class will insert itself into the - * SocketEngine, and register a write event, - * and when the write event occurs it will - * attempt again to write the data. - */ - void WriteLogLine(const std::string &line); - /** Close the log file and cancel any events. - */ - virtual void Close(); - /** Close the log file and cancel any events. - * (indirectly call Close() - */ - virtual ~FileLogger(); -}; - class CoreExport FileLogStream : public LogStream { private: - FileLogger *f; + FileWriter *f; public: - FileLogStream(InspIRCd *Instance, int loglevel, FILE *f) : LogStream(Instance, loglevel) - { - this->f = new FileLogger(Instance, f); - } + FileLogStream(InspIRCd *Instance, int loglevel, FileWriter *fw); - ~FileLogStream() - { - delete this->f; - } + virtual ~FileLogStream(); virtual void OnLog(int loglevel, const std::string &type, const std::string &msg); }; |