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 _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 


log4cpp
Author(s): Stephen Roderick, Bastiaan Bakker, Cedric Le Goater, Steve Ostlind, Marcel Harkema, Walter Stroebel, Glenn Scott and Tony Cheung.
autogenerated on Wed Sep 16 2015 10:27:14