#ifndef MULTILOGTEXT_H #define MULTILOGTEXT_H #include "multilogchannel.h" /** * Simple MultiLogChannel that takes the logdata, formats it textually, and * writes it to a text device, either a file or the screen, yay! This takes * the place of the old standard logging facility. * The entries in the format follow the standard printf % style, and are as * follows: * *@author Mike Buland */ class MultiLogText : public MultiLogChannel { public: /** * Construct a MultiLogText object around a specific filename and format. * The file named by sFileName will be opened for writting in text+append * mode. No existing data will be destroyed. *@param sFileName The file to output log-data to. *@param lpFormat The format using the above specifications to be used for * every log entry. */ MultiLogText( const char *sFileName, const char *lpFormat, bool bRotateLog=false, int nMaxLogs=0 ); /** * Construct a MultiLogText object around a specific file and format. * The file descriptor passed in should describe an already opened and set- * up file or device. This could easily be a socket or stdout or stderr. *@param nFileDesc The already opened descriptor to send data to. *@param lpFormat The format using the above specifications to be used for * every log entry. */ MultiLogText( int nFileDesc, const char *lpFormat ); /** * Destroy the object. */ ~MultiLogText(); bool openLog(); bool append( MultiLog::LogEntry *pEntry ); bool closeLog(); /** * Change the log format on the fly. *@param lpFormat The new format to use for all future log entries. *@returns True if everything was fine, false for catastrophic failure. */ bool setLogFormat( const char *lpFormat ); private: int nFD; /**< The file descriptor we're writing to. */ char *lpFormat; /**< The format that we're using, converted for printf. */ }; #endif