(file) Return to oi_syslog.h CVS log (file) (dir) Up to [OMI] / omi / oi

  1 krisbash 1.1 
  2              #ifndef _oi_syslog_h
  3              #define _oi_syslog_h
  4              
  5              #include <oi/oi.h>
  6              #include <syslog.h>
  7              #include <pal/format.h>
  8              #include <pal/strings.h>
  9              #include <base/log.h>
 10              
 11              BEGIN_EXTERNC
 12                  
 13              #define OILOGSYSTEM_SYSLOG
 14              
 15              unsigned long OIActivityId(OIActivityControlCode controlcode, OIGUID * activityId) { return 0; }
 16              PAL_INLINE void trace_EventTransfer(_Inout_opt_ OIGUID * activity, _Inout_ OIGUID * related) {}
 17              
 18              /*
 19              OMI Levels are as follows:
 20                  OMI_FATAL = 0
 21                  OMI_ERROR = 1
 22 krisbash 1.1     OMI_WARNING = 2
 23                  OMI_INFO = 3
 24                  OMI_DEBUG = 4
 25                  OMI_VERBOSE = 5
 26              
 27              Syslog levels to OMI
 28                  LOG_EMERG	0 0	
 29                  LOG_ALERT	1 0	
 30                  LOG_CRIT	2 0	
 31                  LOG_ERR		3 1	
 32                  LOG_WARNING	4 2	
 33                  LOG_NOTICE	5 3	
 34                  LOG_INFO	6 5	
 35                  LOG_DEBUG	7 4	
 36              */
 37              static int _Syslog2OMI[] = {0, 0, 0, 1, 2, 3, 5, 4};
 38              
 39              /*
 40              SYSLOG does not have LOG_VERBOSE, so we handle it separately
 41              */
 42              #define LOG_VERBOSE LOG_DEBUG
 43 krisbash 1.1 
 44              /*
 45              APPNAME, LOGOPT, LOGFACILITY are defines from the generated code.
 46              */
 47              PAL_INLINE void OpenSysLogOnce()
 48              {
 49                  static int LogOpened = 0;
 50                  if (LogOpened == 1)
 51                      return;
 52                  openlog(APPNAME, LOGOPT, LOGFACILITY);
 53                  LogOpened = 1; 
 54              }
 55              
 56              /*
 57              Pulls OMI run-time log level, ex:
 58                  omiserver --loglevel 4
 59              */
 60              PAL_INLINE PAL_Boolean _ShouldSyslog(unsigned int level)
 61              {
 62                  if (_Syslog2OMI[level] > Log_GetLevel())
 63                      return PAL_FALSE;
 64 krisbash 1.1     else
 65                      return PAL_TRUE;
 66              }
 67              
 68              #define FORMATLENGTH 1024
 69              #define FORMAT_SYSLOG PAL_T("EventId=%d: Priority=%s: ")
 70              
 71              /* Combine prefix and convert input format from PAL_T to SYSLOG/printf */
 72              #if defined(CONFIG_ENABLE_WCHAR)
 73              PAL_INLINE PAL_Boolean _Convert(const TChar * in, char * out)
 74              {
 75                  wchar_t wbuf[FORMATLENGTH];
 76                  wchar_t * fmt = 0;
 77                  memset(&wbuf, 0, sizeof(wbuf));
 78                  if (StrWcslcpy(out, FORMAT_SYSLOG, FORMATLENGTH) >= FORMATLENGTH)
 79                      return PAL_FALSE;
 80                  fmt = WFixupFormat(wbuf, PAL_COUNT(wbuf), in);
 81                  if (!fmt)
 82                      return PAL_FALSE;
 83                  if (StrWcslcat(out, wbuf, FORMATLENGTH) >= FORMATLENGTH)
 84                      return PAL_FALSE;
 85 krisbash 1.1 
 86                  return PAL_TRUE;
 87              }
 88              #else
 89              PAL_INLINE PAL_Boolean _Convert(const TChar * in, char * out)
 90              {
 91                  char buf[FORMATLENGTH];
 92                  char * fmt = 0;
 93              
 94                  memset(&buf, 0, sizeof(buf));
 95                  Strlcpy(out, FORMAT_SYSLOG, FORMATLENGTH);
 96                  fmt = FixupFormat(buf, PAL_COUNT(buf), in);
 97                  if (!fmt)
 98                      return PAL_FALSE;
 99                  if (Strlcat(out, buf, FORMATLENGTH) >= FORMATLENGTH)
100                      return PAL_FALSE;
101              
102                  return PAL_TRUE;
103              }
104              #endif
105              
106 krisbash 1.1 PAL_INLINE void _SyslogPut(
107                  int priority,
108                  const MI_Char* format,
109                  ...)
110              {
111                  char printfFormat[FORMATLENGTH];
112              
113                  if (_ShouldSyslog(priority) && _Convert(format, printfFormat) == PAL_TRUE) 
114                  {
115                      OpenSysLogOnce();
116              
117                      va_list ap;
118                      va_start(ap, format);
119                      vsyslog(priority, printfFormat, ap);
120                      va_end(ap);
121                  }
122              }
123              
124              
125              #define SYSLOG_EVENT0(eventId, eventName, priority, format)     \
126              PAL_INLINE void eventName()                                         \
127 krisbash 1.1 {                                                               \
128                  _SyslogPut(priority, format, eventId, #priority);           \
129              }
130              
131              #define SYSLOG_EVENT0(eventId, eventName, priority, format)                                             \
132              PAL_INLINE void eventName()                                                                                 \
133              {                                                                                                       \
134                  _SyslogPut(priority, format, eventId, #priority);                                                   \
135              }
136              
137              #define SYSLOG_EVENT1(eventId, eventName, priority, format, T0)                                         \
138              PAL_INLINE void eventName(T0 a0)                                                                            \
139              {                                                                                                       \
140                  _SyslogPut(priority, format, eventId, #priority, a0);                                               \
141              }
142              
143              #define SYSLOG_EVENT2(eventId, eventName, priority, format, T0, T1)                                     \
144              PAL_INLINE void eventName(T0 a0, T1 a1)                                                                     \
145              {                                                                                                       \
146                  _SyslogPut(priority, format, eventId, #priority, a0, a1);                                           \
147              }
148 krisbash 1.1 
149              #define SYSLOG_EVENT3(eventId, eventName, priority, format, T0, T1, T2)                                 \
150              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2)                                                              \
151              {                                                                                                       \
152                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2);                                       \
153              }
154              
155              #define SYSLOG_EVENT4(eventId, eventName, priority, format, T0, T1, T2, T3)             \
156              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3)                                       \
157              {                                                                                       \
158                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3);                   \
159              }
160              
161              #define SYSLOG_EVENT5(eventId, eventName, priority, format, T0, T1, T2, T3, T4)         \
162              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4)                                \
163              {                                                                                       \
164                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4);               \
165              }
166              
167              #define SYSLOG_EVENT6(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5)         \
168              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)                             \
169 krisbash 1.1 {                                                                                           \
170                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4, a5);               \
171              }
172              
173              #define SYSLOG_EVENT7(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6)         \
174              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)                          \
175              {                                                                                               \
176                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4, a5, a6);               \
177              }
178              
179              #define SYSLOG_EVENT8(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7)             \
180              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7)                           \
181              {                                                                                                       \
182                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4, a5, a6, a7);                   \
183              }
184              
185              #define SYSLOG_EVENT9(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8)             \
186              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8)                        \
187              {                                                                                                           \
188                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4, a5, a6, a7, a8);                   \
189              }
190 krisbash 1.1 
191              #define SYSLOG_EVENT10(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)                \
192              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8, T9 a9)                         \
193              {                                                                                                                   \
194                  _SyslogPut(priority, format, eventId, #priority, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);                       \
195              }
196              
197              /* Debug versions that can be compiled out */
198              
199              #if defined(CONFIG_ENABLE_DEBUG)                                    
200              #define SYSLOG_EVENTD0(eventId, eventName, priority, format)          \
201              SYSLOG_EVENT0(eventId, eventName, priority, format)                
202              #else
203              #define SYSLOG_EVENTD0(eventId, eventName, priority, format)          \
204              PAL_INLINE void eventName() {}
205              #endif
206              
207              #if defined(CONFIG_ENABLE_DEBUG)                                    
208              #define SYSLOG_EVENTD1(eventId, eventName, priority, format, T0)          \
209              SYSLOG_EVENT1(eventId, eventName, priority, format, T0)                  
210              #else
211 krisbash 1.1 #define SYSLOG_EVENTD1(eventId, eventName, priority, format, T0)          \
212              PAL_INLINE void eventName(T0 a0) {}
213              #endif
214              
215              #if defined(CONFIG_ENABLE_DEBUG)                                    
216              #define SYSLOG_EVENTD2(eventId, eventName, priority, format, T0, T1)          \
217              SYSLOG_EVENT2(eventId, eventName, priority, format, T0, T1)                  
218              #else
219              #define SYSLOG_EVENTD2(eventId, eventName, priority, format, T0, T1)          \
220              PAL_INLINE void eventName(T0 a0, T1 a1) {}
221              #endif
222              
223              #if defined(CONFIG_ENABLE_DEBUG)                                    
224              #define SYSLOG_EVENTD3(eventId, eventName, priority, format, T0, T1, T2)          \
225              SYSLOG_EVENT3(eventId, eventName, priority, format, T0, T1, T2)                  
226              #else
227              #define SYSLOG_EVENTD3(eventId, eventName, priority, format, T0, T1, T2)          \
228              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2) {}
229              #endif
230              
231              #if defined(CONFIG_ENABLE_DEBUG)                                    
232 krisbash 1.1 #define SYSLOG_EVENTD4(eventId, eventName, priority, format, T0, T1, T2, T3)          \
233              SYSLOG_EVENT4(eventId, eventName, priority, format, T0, T1, T2, T3)                  
234              #else
235              #define SYSLOG_EVENTD4(eventId, eventName, priority, format, T0, T1, T2, T3)          \
236              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3) {}
237              #endif
238              
239              #if defined(CONFIG_ENABLE_DEBUG)                                    
240              #define SYSLOG_EVENTD5(eventId, eventName, priority, format, T0, T1, T2, T3, T4)          \
241              SYSLOG_EVENT5(eventId, eventName, priority, format, T0, T1, T2, T3, T4)                  
242              #else
243              #define SYSLOG_EVENTD5(eventId, eventName, priority, format, T0, T1, T2, T3, T4)          \
244              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4) {}
245              #endif
246              
247              #if defined(CONFIG_ENABLE_DEBUG)                                    
248              #define SYSLOG_EVENTD6(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5)          \
249              SYSLOG_EVENT6(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5)                  
250              #else
251              #define SYSLOG_EVENTD6(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5)          \
252              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) {}
253 krisbash 1.1 #endif
254              
255              #if defined(CONFIG_ENABLE_DEBUG)                                    
256              #define SYSLOG_EVENTD7(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6)          \
257              SYSLOG_EVENT7(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6)                  
258              #else
259              #define SYSLOG_EVENTD7(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6)          \
260              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) {}
261              #endif
262              
263              #if defined(CONFIG_ENABLE_DEBUG)                                    
264              #define SYSLOG_EVENTD8(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7)          \
265              SYSLOG_EVENT8(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7)                  
266              #else
267              #define SYSLOG_EVENTD8(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7)          \
268              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7) {}
269              #endif
270              
271              #if defined(CONFIG_ENABLE_DEBUG)                                    
272              #define SYSLOG_EVENTD9(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8)          \
273              SYSLOG_EVENT9(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8)                  
274 krisbash 1.1 #else
275              #define SYSLOG_EVENTD9(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8)          \
276              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8) {}
277              #endif
278              
279              #if defined(CONFIG_ENABLE_DEBUG)                                    
280              #define SYSLOG_EVENTD10(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)          \
281              SYSLOG_EVENT10(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)                  
282              #else
283              #define SYSLOG_EVENTD10(eventId, eventName, priority, format, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)          \
284              PAL_INLINE void eventName(T0 a0, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8, T9 a9) {}
285              #endif
286              
287              END_EXTERNC
288              
289              #endif /* _oi_syslog_h */

ViewCVS 0.9.2