log4shib  2.0.1
NTEventLogAppender.hh
Go to the documentation of this file.
1 /*
2  * NTEventLogAppender.hh
3  *
4  * See the COPYING file for the terms of usage and distribution.
5  */
6 
7 #ifndef _LOG4SHIB_NTEVENTLOGAPPENDER_HH
8 #define _LOG4SHIB_NTEVENTLOGAPPENDER_HH
9 
10 #ifdef WIN32 // only available on Win32
11 
12 // deal with ERROR #define
13 // N.B. This #includes windows.h with NOGDI and WIN32_LEAN_AND_MEAN #defined.
14 // If this is not what the user wants, #include windows.h before this file.
15 #ifndef _WINDOWS_
16 # ifndef NOGDI
17 # define NOGDI // this will circumvent the ERROR #define in windows.h
18 # define LOG4SHIB_UNDEFINE_NOGDI
19 # endif
20 
21 # ifndef WIN32_LEAN_AND_MEAN
22 # define WIN32_LEAN_AND_MEAN
23 # define LOG4SHIB_UNDEFINE_WIN32_LEAN_AND_MEAN
24 # endif
25 
26 # include <windows.h>
27 
28 # ifdef LOG4SHIB_UNDEFINE_NOGDI
29 # undef NOGDI
30 # endif
31 
32 # ifdef LOG4SHIB_UNDEFINE_WIN32_LEAN_AND_MEAN
33 # undef WIN32_LEAN_AND_MEAN
34 # endif
35 
36 #endif // done dealing with ERROR #define
37 
38 #include <log4shib/Portability.hh>
40 
41 namespace log4shib {
42 
53  public:
54 
60  NTEventLogAppender(const std::string& name, const std::string& sourceName);
61  virtual ~NTEventLogAppender();
62 
66  virtual bool reopen();
67 
68  virtual void close();
69 
70  protected:
71 
72  WORD getCategory(Priority::Value priority);
73  WORD getType(Priority::Value priority);
74  HKEY regGetKey(TCHAR *subkey, DWORD *disposition);
75  void regSetString(HKEY hkey, const TCHAR *name, const TCHAR *value);
76  void regSetDword(HKEY hkey, const TCHAR *name, DWORD value);
77  void addRegistryInfo(const char *source);
78 
79  virtual void open();
80 
85  virtual void _append(const LoggingEvent& event);
86 
87  HANDLE _hEventSource;
88  std::string _strSourceName;
89  };
90 }
91 
92 #else // WIN32
93 #error NTEventLoggAppender is not available on on Win32 platforms
94 #endif // WIN32
95 
96 #endif // _LOG4SHIB_NTEVENTLOGAPPENDER_HH
97 
#define LOG4SHIB_EXPORT
Definition: Export.hh:11
LayoutAppender is a common superclass for all Appenders that require a Layout.
Definition: LayoutAppender.hh:24
NTEventLogAppender is an Appender that sends LoggingEvents to the Windows event log.
Definition: NTEventLogAppender.hh:52
std::string _strSourceName
Definition: NTEventLogAppender.hh:88
HANDLE _hEventSource
Definition: NTEventLogAppender.hh:87
int Value
The type of Priority Values.
Definition: Priority.hh:84
The top level namespace for all 'Log for C++' types and classes.
Definition: AbortAppender.hh:16
The internal representation of logging events.
Definition: LoggingEvent.hh:32