$search
00001 /* 00002 * NTEventLogAppender.hh 00003 * 00004 * See the COPYING file for the terms of usage and distribution. 00005 */ 00006 00007 #ifndef _LOG4CPP_NTEVENTLOGAPPENDER_HH 00008 #define _LOG4CPP_NTEVENTLOGAPPENDER_HH 00009 00010 #ifdef WIN32 // only available on Win32 00011 00012 // deal with ERROR #define 00013 // N.B. This #includes windows.h with NOGDI and WIN32_LEAN_AND_MEAN #defined. 00014 // If this is not what the user wants, #include windows.h before this file. 00015 #ifndef _WINDOWS_ 00016 # ifndef NOGDI 00017 # define NOGDI // this will circumvent the ERROR #define in windows.h 00018 # define LOG4CPP_UNDEFINE_NOGDI 00019 # endif 00020 00021 # ifndef WIN32_LEAN_AND_MEAN 00022 # define WIN32_LEAN_AND_MEAN 00023 # define LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN 00024 # endif 00025 00026 # include <windows.h> 00027 00028 # ifdef LOG4CPP_UNDEFINE_NOGDI 00029 # undef NOGDI 00030 # endif 00031 00032 # ifdef LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN 00033 # undef WIN32_LEAN_AND_MEAN 00034 # endif 00035 00036 #endif // done dealing with ERROR #define 00037 00038 #include <log4cpp/Portability.hh> 00039 #include <log4cpp/AppenderSkeleton.hh> 00040 00041 namespace log4cpp { 00042 00052 class LOG4CPP_EXPORT NTEventLogAppender : public AppenderSkeleton { 00053 public: 00054 00060 NTEventLogAppender(const std::string& name, const std::string& sourceName); 00061 virtual ~NTEventLogAppender(); 00062 00066 virtual bool reopen(); 00067 00068 virtual void close(); 00069 00074 virtual bool requiresLayout() const; 00075 00076 virtual void setLayout(Layout* layout); 00077 00078 protected: 00079 00080 WORD getCategory(Priority::Value priority); 00081 WORD getType(Priority::Value priority); 00082 HKEY regGetKey(TCHAR *subkey, DWORD *disposition); 00083 void regSetString(HKEY hkey, TCHAR *name, TCHAR *value); 00084 void regSetDword(HKEY hkey, TCHAR *name, DWORD value); 00085 void addRegistryInfo(const char *source); 00086 00087 virtual void open(); 00088 00093 virtual void _append(const LoggingEvent& event); 00094 00095 HANDLE _hEventSource; 00096 std::string _strSourceName; 00097 }; 00098 } 00099 00100 #else // WIN32 00101 #error NTEventLoggAppender is not available on on Win32 platforms 00102 #endif // WIN32 00103 00104 #endif // _LOG4CPP_NTEVENTLOGAPPENDER_HH 00105