vnclog.h
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:3k
源码类别:

网格计算

开发平台:

Visual C++

  1. //  Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved. //  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved. // //  This program is free software; you can redistribute it and/or modify //  it under the terms of the GNU General Public License as published by //  the Free Software Foundation; either version 2 of the License, or //  (at your option) any later version. // //  This program is distributed in the hope that it will be useful, //  but WITHOUT ANY WARRANTY; without even the implied warranty of //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the //  GNU General Public License for more details. // //  You should have received a copy of the GNU General Public License //  along with this program; if not, write to the Free Software //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, //  USA. // // If the source code for the program is not available from the place from // which you received this file, check http://www.realvnc.com/ or contact // the authors on info@realvnc.com for information on obtaining it. // This is an object and macros which provide general logging and debugging functions. // It can log to a file, to a new console, and/or to debug - others maybe to follow. // Every log object has a logging level (which can be changed). // Only log requests with a high enough level attached get logged. So the // level can be thought of as 'amount of detail'. // We use Unicode-portable stuff here for compatibility with WinCE. // // Typical use: // //       Log log; //       log.SetFile( _T("myapp.log") ); //       ... //       log.Print(2, _T("x = %dn"), x); // #ifndef VNCLOGGING #define VNCLOGGING #include <stdarg.h> #include <stdio.h> #include <time.h>
  2. typedef enum {LL_INFO = 1, LL_WARNING = 2, LL_ERROR = 4} LOGLEVEL;
  3. class VNCLog   { public:     // Logging mode flags:     static const int ToDebug;     static const int ToFile;     static const int ToConsole;     // Create a new log object.     // Parameters as follows:     //    mode     - specifies where output should go, using combination     //               of flags above.     //    level    - the default level     //    filename - if flag Log::ToFile is specified in the type,     //               a filename must be specified here.     //    append   - if logging to a file, whether or not to append to any     //               existing log. VNCLog();     inline void Print(int level, const char* format, ...) {         if (level > m_level) return;         va_list ap;         va_start(ap, format);         ReallyPrint(format, ap);         va_end(ap);     }          // Change the log level     void SetLevel(int level);     // Change the logging mode     void SetMode(int mode);     // Change or set the logging filename.  This only has an effect if // the log mode includes ToFile     void SetFile(const char* filename, bool append = false); virtual ~VNCLog(); private: void ReallyPrintLine(const char* line);     void ReallyPrint(const char* format, va_list ap); void OpenFile();     void CloseFile();     bool m_tofile, m_todebug, m_toconsole;     int m_level;     HANDLE hlogfile; LPSTR m_filename; bool m_append; time_t m_lastLogTime; };
  4. #endif // VNCLOGGING