* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
class CoreExport FileWriter : 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.
*/
- FileWriter(InspIRCd* Instance, FILE* logfile);
-
- /** This returns false, logfiles are writeable.
- */
- virtual bool Readable();
+ FileWriter(FILE* logfile);
/** Handle pending write events.
* This will flush any waiting data to disk.
virtual void Close();
/** Close the log file and cancel any events.
- * (indirectly call Close()
*/
virtual ~FileWriter();
};
class CoreExport LogStream : public classbase
{
protected:
- InspIRCd *ServerInstance;
int loglvl;
public:
- LogStream(InspIRCd *Instance, int loglevel) : ServerInstance(Instance), loglvl(loglevel)
+ LogStream(int loglevel) : loglvl(loglevel)
{
}
typedef std::map<FileWriter*, int> FileLogMap;
-class CoreExport LogManager : public classbase
+class CoreExport LogManager
{
private:
/** Lock variable, set to true when a log is in progress, which prevents further loggging from happening and creating a loop.
*/
LogStream* noforkstream;
- InspIRCd *ServerInstance;
-
/** Map of active log types and what LogStreams will receive them.
*/
std::map<std::string, std::vector<LogStream *> > LogStreams;
public:
- LogManager(InspIRCd *Instance)
+ LogManager()
{
- ServerInstance = Instance;
+ noforkstream = NULL;
Logging = false;
}
+ ~LogManager()
+ {
+ if (noforkstream)
+ delete noforkstream;
+ Logging = true;
+ }
+
/** Sets up the logstream for -nofork. Called by InspIRCd::OpenLog() and LogManager::OpenFileLogs().
* First time called it creates the nofork stream and stores it in noforkstream. Each call thereafter just readds it to GlobalLogStreams
* and updates the loglevel.