Log.h
资源名称:vnc3326s.zip [点击查看]
上传用户:sbftbdw
上传日期:2007-01-03
资源大小:379k
文件大小:2k
源码类别:
远程控制编程
开发平台:
Visual C++
- // 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>
- class Log
- {
- 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.
- Log(int mode = ToDebug, int level = 1, LPSTR filename = NULL, bool append = false);
- inline void Print(int level, LPSTR 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 enables ToFile mode if
- // not already enabled.
- void SetFile(LPSTR filename, bool append = false);
- virtual ~Log();
- private:
- void ReallyPrint(LPSTR 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;
- };
- #endif // VNCLOGGING