Cause Win32 to output to the event log rather than stderr by default.
authorBruce Momjian
Sun, 27 Feb 2005 01:02:57 +0000 (01:02 +0000)
committerBruce Momjian
Sun, 27 Feb 2005 01:02:57 +0000 (01:02 +0000)
Magnus Hagander

src/backend/utils/error/elog.c

index 36474d0a90fea1e55d0b40f67348c1a0c53b1dec..80b222913ecff68cb89f0b4a7b35fcf95b4e1402 100644 (file)
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.156 2005/02/22 04:37:38 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.157 2005/02/27 01:02:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1630,7 +1630,18 @@ send_message_to_server_log(ErrorData *edata)
 #endif   /* WIN32 */
    /* Write to stderr, if enabled */
    if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == Debug)
+   {
+#ifdef WIN32
+       /* In a win32 service environment, there is no usable stderr. Capture
+          anything going there and write it to the eventlog instead.
+          If stderr redirection is active, leave it to stderr because the
+          logger will capture it to a file. */
+       if ((!Redirect_stderr || am_syslogger) && pgwin32_is_service())
+           write_eventlog(EVENTLOG_ERROR_TYPE, buf.data);
+       else
+#endif
        fprintf(stderr, "%s", buf.data);
+   }
 
    /* If in the syslogger process, try to write messages direct to file */
    if (am_syslogger)