log4shib 2.0.0

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>
39#include <log4shib/LayoutAppender.hh>
40
41 namespace log4shib {
42
52 class LOG4SHIB_EXPORT NTEventLogAppender : public LayoutAppender {
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
LOG4SHIB_EXPORT
#define LOG4SHIB_EXPORT
Definition: Export.hh:11
LayoutAppender.hh
Portability.hh
log4shib::LayoutAppender
LayoutAppender is a common superclass for all Appenders that require a Layout.
Definition: LayoutAppender.hh:24
log4shib::NTEventLogAppender
NTEventLogAppender is an Appender that sends LoggingEvents to the Windows event log.
Definition: NTEventLogAppender.hh:52
log4shib::NTEventLogAppender::_strSourceName
std::string _strSourceName
Definition: NTEventLogAppender.hh:88
log4shib::NTEventLogAppender::_hEventSource
HANDLE _hEventSource
Definition: NTEventLogAppender.hh:87
log4shib::Priority::Value
int Value
The type of Priority Values.
Definition: Priority.hh:84
log4shib
The top level namespace for all 'Log for C++' types and classes.
Definition: AbortAppender.hh:16
log4shib::LoggingEvent
The internal representation of logging events.
Definition: LoggingEvent.hh:32