[Groonga-commit] groonga/groonga at 6fd52b7 [master] windows: use EventWrite()

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Jul 28 00:24:02 JST 2015


Kouhei Sutou	2015-07-28 00:24:02 +0900 (Tue, 28 Jul 2015)

  New Revision: 6fd52b72a7f15b63b2a55c5356d7bfc4ba5a0f97
  https://github.com/groonga/groonga/commit/6fd52b72a7f15b63b2a55c5356d7bfc4ba5a0f97

  Message:
    windows: use EventWrite()
    
    It doesn't work yet... EventWrite() doesn't report error but Windows
    Event Viewer doesn't show events from Groonga... Why...

  Modified files:
    lib/windows_event_logger.c

  Modified: lib/windows_event_logger.c (+49 -9)
===================================================================
--- lib/windows_event_logger.c    2015-07-28 00:23:41 +0900 (81d6ed6)
+++ lib/windows_event_logger.c    2015-07-28 00:24:02 +0900 (052ca23)
@@ -25,6 +25,7 @@
 #ifdef WIN32
 
 # include <evntprov.h>
+# include <evntrace.h>
 
 typedef struct _grn_windows_event_logger_data {
   REGHANDLE registration_handle;
@@ -42,7 +43,40 @@ windows_event_logger_log(grn_ctx *ctx, grn_log_level level,
   UINT code_page;
   DWORD convert_flags = 0;
   int n_converted_chars;
-  ULONGLONG keyword = 0;
+  EVENT_DESCRIPTOR event;
+
+  switch (level) {
+  case GRN_LOG_NONE :
+    event.Level = TRACE_LEVEL_NONE;
+    break;
+  case GRN_LOG_EMERG :
+  case GRN_LOG_ALERT :
+  case GRN_LOG_CRIT :
+    event.Level = TRACE_LEVEL_CRITICAL;
+    break;
+  case GRN_LOG_ERROR :
+    event.Level = TRACE_LEVEL_ERROR;
+    break;
+  case GRN_LOG_WARNING :
+    event.Level = TRACE_LEVEL_WARNING;
+    break;
+  case GRN_LOG_NOTICE :
+  case GRN_LOG_INFO :
+  case GRN_LOG_DEBUG :
+  case GRN_LOG_DUMP :
+    event.Level = TRACE_LEVEL_INFORMATION;
+    break;
+  default :
+    event.Level = TRACE_LEVEL_INFORMATION;
+    break;
+  }
+
+  event.Id = event.Level;
+  event.Version = 0;
+  event.Channel = 0x08;
+  event.Opcode = 0;
+  event.Task = 0;
+  event.Keyword = 0x00;
 
   GRN_TEXT_INIT(&formatted_buffer, 0);
   if (location && location[0]) {
@@ -64,6 +98,7 @@ windows_event_logger_log(grn_ctx *ctx, grn_log_level level,
 #define CONVERTED_BUFFER_SIZE 512
   if (n_converted_chars < CONVERTED_BUFFER_SIZE) {
     WCHAR converted_buffer[CONVERTED_BUFFER_SIZE];
+    EVENT_DATA_DESCRIPTOR descriptor;
     n_converted_chars = MultiByteToWideChar(code_page,
                                             convert_flags,
                                             GRN_TEXT_VALUE(&formatted_buffer),
@@ -71,13 +106,16 @@ windows_event_logger_log(grn_ctx *ctx, grn_log_level level,
                                             converted_buffer,
                                             CONVERTED_BUFFER_SIZE);
     converted_buffer[n_converted_chars] = L'\0';
-    EventWriteString(data->registration_handle,
-                     level,
-                     keyword,
-                     converted_buffer);
+    EventDataDescCreate(&descriptor, converted_buffer,
+                        sizeof(WCHAR) * n_converted_chars);
+    EventWrite(data->registration_handle,
+               &event,
+               1,
+               &descriptor);
 #undef CONVERTED_BUFFER_SIZE
   } else {
     WCHAR *converted;
+    EVENT_DATA_DESCRIPTOR descriptor;
     converted = GRN_MALLOCN(WCHAR, n_converted_chars);
     n_converted_chars = MultiByteToWideChar(code_page,
                                             convert_flags,
@@ -86,10 +124,12 @@ windows_event_logger_log(grn_ctx *ctx, grn_log_level level,
                                             converted,
                                             n_converted_chars);
     converted[n_converted_chars] = L'\0';
-    EventWriteString(data->registration_handle,
-                     level,
-                     keyword,
-                     converted);
+    EventDataDescCreate(&descriptor, converted,
+                        sizeof(WCHAR) * n_converted_chars);
+    EventWrite(data->registration_handle,
+               &event,
+               1,
+               &descriptor);
     GRN_FREE(converted);
   }
   GRN_OBJ_FIN(ctx, &formatted_buffer);
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index