log4shib 2.0.0

NTEventLogAppender.hh

Go to the documentation of this file.
00001 /*
00002  * NTEventLogAppender.hh
00003  *
00004  * See the COPYING file for the terms of usage and distribution.
00005  */
00006 
00007 #ifndef _LOG4SHIB_NTEVENTLOGAPPENDER_HH
00008 #define _LOG4SHIB_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 LOG4SHIB_UNDEFINE_NOGDI
00019 #  endif
00020 
00021 #  ifndef WIN32_LEAN_AND_MEAN
00022 #    define WIN32_LEAN_AND_MEAN
00023 #    define LOG4SHIB_UNDEFINE_WIN32_LEAN_AND_MEAN
00024 #  endif
00025 
00026 #  include <windows.h>
00027 
00028 #  ifdef LOG4SHIB_UNDEFINE_NOGDI
00029 #    undef NOGDI
00030 #  endif
00031 
00032 #  ifdef LOG4SHIB_UNDEFINE_WIN32_LEAN_AND_MEAN
00033 #    undef WIN32_LEAN_AND_MEAN
00034 #  endif
00035 
00036 #endif // done dealing with ERROR #define
00037 
00038 #include <log4shib/Portability.hh>
00039 #include <log4shib/LayoutAppender.hh>
00040 
00041 namespace log4shib {
00042 
00052     class LOG4SHIB_EXPORT NTEventLogAppender : public LayoutAppender {
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 
00070     protected:
00071         
00072         WORD getCategory(Priority::Value priority);
00073         WORD getType(Priority::Value priority);
00074         HKEY regGetKey(TCHAR *subkey, DWORD *disposition);
00075         void regSetString(HKEY hkey, const TCHAR *name, const TCHAR *value);
00076         void regSetDword(HKEY hkey, const TCHAR *name, DWORD value);
00077         void addRegistryInfo(const char *source);
00078 
00079         virtual void open();
00080 
00085         virtual void _append(const LoggingEvent& event);
00086 
00087         HANDLE _hEventSource;
00088         std::string _strSourceName;
00089     };
00090 }
00091 
00092 #else // WIN32
00093 #error NTEventLoggAppender is not available on on Win32 platforms
00094 #endif  // WIN32
00095 
00096 #endif // _LOG4SHIB_NTEVENTLOGAPPENDER_HH
00097 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines