This patch fixes the event type used to log output from the
authorBruce Momjian
Fri, 12 Aug 2005 21:36:59 +0000 (21:36 +0000)
committerBruce Momjian
Fri, 12 Aug 2005 21:36:59 +0000 (21:36 +0000)
stderr-in-service or output-from-syslogger-in-service code. Previously
everything was flagged as ERRORs there, which caused all instances to
log "LOG: logger shutting down" as error...

Please apply for 8.1. I'd also like it considered for 8.0 since logging
non-errors as errors can be cause for alarm amongst people who actually
look at their logs...

Magnus Hagander

src/backend/utils/error/elog.c

index 2a26fe7fd409ffa4a9d795a5d8c64d4f58673294..62919ffb04c87fe36c268ffe387cfbe30b9bccf1 100644 (file)
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.161 2005/06/10 20:48:54 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.162 2005/08/12 21:36:59 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1266,6 +1266,7 @@ write_syslog(int level, const char *line)
 static void
 write_eventlog(int level, const char *line)
 {
+   int eventlevel = EVENTLOG_ERROR_TYPE;
    static HANDLE evtHandle = INVALID_HANDLE_VALUE;
 
    if (evtHandle == INVALID_HANDLE_VALUE)
@@ -1278,8 +1279,33 @@ write_eventlog(int level, const char *line)
        }
    }
 
+   switch (level)
+   {
+       case DEBUG5:
+       case DEBUG4:
+       case DEBUG3:
+       case DEBUG2:
+       case DEBUG1:
+       case LOG:
+       case COMMERROR:
+       case INFO:
+       case NOTICE:
+           eventlevel = EVENTLOG_INFORMATION_TYPE;
+           break;
+       case WARNING:
+           eventlevel = EVENTLOG_WARNING_TYPE;
+           break;
+       case ERROR:
+       case FATAL:
+       case PANIC:
+       default:
+           eventlevel = EVENTLOG_ERROR_TYPE;
+           break;
+   }
+
+
    ReportEvent(evtHandle,
-               level,
+               eventlevel,
                0,
                0,              /* All events are Id 0 */
                NULL,
@@ -1634,32 +1660,7 @@ send_message_to_server_log(ErrorData *edata)
    /* Write to eventlog, if enabled */
    if (Log_destination & LOG_DESTINATION_EVENTLOG)
    {
-       int         eventlog_level;
-
-       switch (edata->elevel)
-       {
-           case DEBUG5:
-           case DEBUG4:
-           case DEBUG3:
-           case DEBUG2:
-           case DEBUG1:
-           case LOG:
-           case COMMERROR:
-           case INFO:
-           case NOTICE:
-               eventlog_level = EVENTLOG_INFORMATION_TYPE;
-               break;
-           case WARNING:
-               eventlog_level = EVENTLOG_WARNING_TYPE;
-               break;
-           case ERROR:
-           case FATAL:
-           case PANIC:
-           default:
-               eventlog_level = EVENTLOG_ERROR_TYPE;
-               break;
-       }
-       write_eventlog(eventlog_level, buf.data);
+       write_eventlog(edata->elevel, buf.data);
    }
 #endif   /* WIN32 */
 
@@ -1675,7 +1676,7 @@ send_message_to_server_log(ErrorData *edata)
         * because that's really a pipe to the syslogger process.
         */
        if ((!Redirect_stderr || am_syslogger) && pgwin32_is_service())
-           write_eventlog(EVENTLOG_ERROR_TYPE, buf.data);
+           write_eventlog(edata->elevel, buf.data);
        else
 #endif
            fprintf(stderr, "%s", buf.data);