One Level Up
Top Level
src/os/win32/ngx_event_log.c - nginx source code
Functions defined
Macros defined
Source code
- #include <ngx_config.h>
- #include <ngx_core.h>
- #define NGX_MAX_ERROR_STR 2048
- void ngx_cdecl
- ngx_event_log(ngx_err_t err, const char *fmt, ...)
- {
- u_char *p, *last;
- long types;
- HKEY key;
- HANDLE ev;
- va_list args;
- u_char text[NGX_MAX_ERROR_STR];
- const char *msgarg[9];
- static u_char netmsg[] = "%SystemRoot%\\System32\\netmsg.dll";
- last = text + NGX_MAX_ERROR_STR;
- p = text + GetModuleFileName(NULL, (char *) text, NGX_MAX_ERROR_STR - 50);
- *p++ = ':';
- ngx_linefeed(p);
- va_start(args, fmt);
- p = ngx_vslprintf(p, last, fmt, args);
- va_end(args);
- if (err) {
- p = ngx_log_errno(p, last, err);
- }
- if (p > last - NGX_LINEFEED_SIZE - 1) {
- p = last - NGX_LINEFEED_SIZE - 1;
- }
- ngx_linefeed(p);
- *p = '\0';
-
- if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
- "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\nginx",
- 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL)
- != 0)
- {
- return;
- }
- if (RegSetValueEx(key, "EventMessageFile", 0, REG_EXPAND_SZ,
- netmsg, sizeof(netmsg) - 1)
- != 0)
- {
- return;
- }
- types = EVENTLOG_ERROR_TYPE;
- if (RegSetValueEx(key, "TypesSupported", 0, REG_DWORD,
- (u_char *) &types, sizeof(long))
- != 0)
- {
- return;
- }
- RegCloseKey(key);
- ev = RegisterEventSource(NULL, "nginx");
- msgarg[0] = (char *) text;
- msgarg[1] = NULL;
- msgarg[2] = NULL;
- msgarg[3] = NULL;
- msgarg[4] = NULL;
- msgarg[5] = NULL;
- msgarg[6] = NULL;
- msgarg[7] = NULL;
- msgarg[8] = NULL;
-
- ReportEvent(ev, EVENTLOG_ERROR_TYPE, 0, 3299, NULL, 9, 0, msgarg, NULL);
- DeregisterEventSource(ev);
- }
One Level Up
Top Level