123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * NTEventLogAppender.hh
- *
- * See the COPYING file for the terms of usage and distribution.
- */
- #ifndef _LOG4CPP_NTEVENTLOGAPPENDER_HH
- #define _LOG4CPP_NTEVENTLOGAPPENDER_HH
- #ifdef _WIN32 // only available on Win32
- // deal with ERROR #define
- // N.B. This #includes windows.h with NOGDI and WIN32_LEAN_AND_MEAN #defined.
- // If this is not what the user wants, #include windows.h before this file.
- #ifndef _WINDOWS_
- # ifndef NOGDI
- # define NOGDI // this will circumvent the ERROR #define in windows.h
- # define LOG4CPP_UNDEFINE_NOGDI
- # endif
- # ifndef WIN32_LEAN_AND_MEAN
- # define WIN32_LEAN_AND_MEAN
- # define LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN
- # endif
- # include <windows.h>
- # ifdef LOG4CPP_UNDEFINE_NOGDI
- # undef NOGDI
- # endif
- # ifdef LOG4CPP_UNDEFINE_WIN32_LEAN_AND_MEAN
- # undef WIN32_LEAN_AND_MEAN
- # endif
- #endif // done dealing with ERROR #define
- #include <log4cpp/Portability.hh>
- #include <log4cpp/AppenderSkeleton.hh>
- LOG4CPP_NS_BEGIN
- /**
- * NTEventLogAppender is an Appender that sends LoggingEvents to the
- * Windows event log.
- * Building log4cpp.dsp/log4cppDLL.dsp creates the resource DLL NTEventLogAppender.dll.
- * Do not forget to place this DLL in a directory that is on the PATH
- * of the Windows system. Otherwise, the category and message will not display
- * correctly in Event Viewer.<BR>
- * <B>NB:</B> This class is only available on Win32 platforms.
- **/
- class LOG4CPP_EXPORT NTEventLogAppender : public AppenderSkeleton {
- public:
- /**
- * Instantiate an NTEventLogAppender with given name and source.
- * @param name The name of the Appender
- * @param sourceName The source name to log
- **/
- NTEventLogAppender(const std::string& name, const std::string& sourceName);
- virtual ~NTEventLogAppender();
- /**
- * Calls open() and close()
- **/
- virtual bool reopen();
- virtual void close();
- /**
- * The NTEventLogAppender does its own Layout.
- * @returns false
- **/
- virtual bool requiresLayout() const;
- virtual void setLayout(Layout* layout);
- protected:
- WORD getCategory(Priority::Value priority);
- WORD getType(Priority::Value priority);
- HKEY regGetKey(TCHAR *subkey, DWORD *disposition);
- void regSetString(HKEY hkey, TCHAR *name, TCHAR *value);
- void regSetDword(HKEY hkey, TCHAR *name, DWORD value);
- void addRegistryInfo(const char *source);
- virtual void open();
- /**
- * Sends a LoggingEvent to NT Event log.
- * @param event the LoggingEvent to log.
- **/
- virtual void _append(const LoggingEvent& event);
- HANDLE _hEventSource;
- std::string _strSourceName;
- };
- LOG4CPP_NS_END
- #else // WIN32
- #error NTEventLoggAppender is not available on on Win32 platforms
- #endif // WIN32
- #endif // _LOG4CPP_NTEVENTLOGAPPENDER_HH
|