Log.h
上传用户:sbftbdw
上传日期:2007-01-03
资源大小:379k
文件大小:2k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. // This is an object and macros which provide general logging and debugging functions.
  2. // It can log to a file, to a new console, and/or to debug - others maybe to follow.
  3. // Every log object has a logging level (which can be changed).
  4. // Only log requests with a high enough level attached get logged. So the
  5. // level can be thought of as 'amount of detail'.
  6. // We use Unicode-portable stuff here for compatibility with WinCE.
  7. //
  8. // Typical use:
  9. //
  10. //       Log log;
  11. //       log.SetFile( _T("myapp.log") );
  12. //       ...
  13. //       log.Print(2, _T("x = %dn"), x);
  14. //
  15. #ifndef VNCLOGGING
  16. #define VNCLOGGING
  17. #include <stdarg.h>
  18. #include <stdio.h>
  19. class Log  
  20. {
  21. public:
  22.     // Logging mode flags:
  23.     static const int ToDebug;
  24.     static const int ToFile;
  25.     static const int ToConsole;
  26.     // Create a new log object.
  27.     // Parameters as follows:
  28.     //    mode     - specifies where output should go, using combination
  29.     //               of flags above.
  30.     //    level    - the default level
  31.     //    filename - if flag Log::ToFile is specified in the type,
  32.     //               a filename must be specified here.
  33.     //    append   - if logging to a file, whether or not to append to any
  34.     //               existing log.
  35. Log(int mode = ToDebug, int level = 1, LPSTR filename = NULL, bool append = false);
  36.     inline void Print(int level, LPSTR format, ...) {
  37.         if (level > m_level) return;
  38.         va_list ap;
  39.         va_start(ap, format);
  40.         ReallyPrint(format, ap);
  41.         va_end(ap);
  42.     }
  43.     
  44.     // Change the log level
  45.     void SetLevel(int level);
  46.     // Change the logging mode
  47.     void SetMode(int mode);
  48.     // Change or set the logging filename.  This enables ToFile mode if
  49.     // not already enabled.
  50.     void SetFile(LPSTR filename, bool append = false);
  51. virtual ~Log();
  52. private:
  53.     void ReallyPrint(LPSTR format, va_list ap);
  54. void OpenFile();
  55.     void CloseFile();
  56.     bool m_tofile, m_todebug, m_toconsole;
  57.     int m_level;
  58.     HANDLE hlogfile;
  59. LPSTR m_filename;
  60. bool m_append;
  61. };
  62. #endif // VNCLOGGING