FileLogHandler.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef FILELOGHANDLER_H
  14. #define FILELOGHANDLER_H
  15. #include "LogHandler.hpp"
  16. class File_class;
  17. /**
  18.  * Logs messages to a file. The log file will be archived depending on
  19.  * the file's size or after N number of log entries. 
  20.  * There will be only a specified number of archived logs 
  21.  * which will be "recycled".
  22.  *
  23.  * The archived log file will be named as <filename>.1..N.
  24.  * 
  25.  *
  26.  * @see LogHandler
  27.  * @version #@ $Id: FileLogHandler.hpp,v 1.2 2003/09/01 10:15:53 innpeno Exp $
  28.  */
  29. class FileLogHandler : public LogHandler
  30. {
  31. public:
  32.   /** Max number of log files to archive. */
  33.   STATIC_CONST( MAX_NO_FILES = 6 );
  34.   /** Max file size of the log before archiving.  */
  35.   STATIC_CONST( MAX_FILE_SIZE = 1024000 );
  36.   /** Max number of log entries before archiving. */
  37.   STATIC_CONST( MAX_LOG_ENTRIES = 10000 );
  38.   /**
  39.    * Default constructor.
  40.    */
  41.   FileLogHandler();
  42.   /**
  43.    * Creates a new file handler with the specified filename, 
  44.    * max number of archived log files and max log size for each log.
  45.    *
  46.    * @param aFileName the log filename.
  47.    * @param maxNoFiles the maximum number of archived log files.
  48.    * @param maxFileSize the maximum log file size before archiving.
  49.    * @param maxLogEntries the maximum number of log entries before checking time to archive.
  50.    */
  51.   FileLogHandler(const char* aFileName, 
  52.  int maxNoFiles = MAX_NO_FILES, 
  53.  long maxFileSize = MAX_FILE_SIZE,
  54.  unsigned int maxLogEntries = MAX_LOG_ENTRIES);
  55.   /**
  56.    * Destructor.
  57.    */
  58.   virtual ~FileLogHandler();
  59.   
  60.   virtual bool open();
  61.   virtual bool close();
  62.   virtual bool setParam(const BaseString &param, const BaseString &value);
  63.   virtual bool checkParams();
  64.   
  65. protected:
  66.   virtual void writeHeader(const char* pCategory, Logger::LoggerLevel level);
  67.   virtual void writeMessage(const char* pMsg);
  68.   virtual void writeFooter();
  69.   
  70. private:
  71.   /** Prohibit */
  72.   FileLogHandler(const FileLogHandler&);
  73.   FileLogHandler operator = (const FileLogHandler&);
  74.   bool operator == (const FileLogHandler&);
  75.   /**
  76.    * Returns true if it is time to create a new log file.
  77.    */
  78.   bool isTimeForNewFile();
  79.   /**
  80.    * Archives the current log file and creates a new one.
  81.    * The archived log filename will be in the format of <filename>.N
  82.    *
  83.    * @return true if successful.
  84.    */
  85.   bool createNewFile();
  86.   bool setFilename(const BaseString &filename);
  87.   bool setMaxSize(const BaseString &size);
  88.   bool setMaxFiles(const BaseString &files);
  89.   
  90.   int m_maxNoFiles;
  91.   long m_maxFileSize;
  92.   unsigned int m_maxLogEntries;
  93.   File_class* m_pLogFile;
  94. };
  95. #endif