]> granicus.if.org Git - postgresql/commitdiff
On second thought, the tests for what to do with stderr output are a
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 19 Jul 2007 21:58:12 +0000 (21:58 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 19 Jul 2007 21:58:12 +0000 (21:58 +0000)
lot more sensible if we check the chunk-output case first.  Not
back-patched since it's just a cosmetic improvement.

src/backend/utils/error/elog.c

index 88d9182f297b19cc0f7a08be8f65e734900554a8..11231c90d6dff872e254f17d40cbb3ee753724c4 100644 (file)
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.188 2007/07/19 19:13:43 adunstan Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.189 2007/07/19 21:58:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1770,28 +1770,26 @@ send_message_to_server_log(ErrorData *edata)
        /* Write to stderr, if enabled */
        if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == DestDebug)
        {
+               /*
+                * Use the chunking protocol if we know the syslogger should
+                * be catching stderr output, and we are not ourselves the
+                * syslogger.  Otherwise, just do a vanilla write to stderr.
+                */
+               if (redirection_done && !am_syslogger)
+                       write_pipe_chunks(fileno(stderr), buf.data, buf.len);
 #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, it's ok to write to stderr because
-                * that's really a pipe to the syslogger process. Unless we're in the
-                * postmaster, and the syslogger process isn't started yet.
+                * If stderr redirection is active, it was OK to write to stderr above
+                * because that's really a pipe to the syslogger process.
                 */
-               if (pgwin32_is_service() && (!redirection_done || am_syslogger) )
+               else if (pgwin32_is_service())
                        write_eventlog(edata->elevel, buf.data);
-               else
 #endif
-                       /* only use the chunking protocol if we know the syslogger should
-                        * be catching stderr output, and we are not ourselves the
-                        * syslogger. Otherwise, go directly to stderr.
-                        */
-                       if (redirection_done && !am_syslogger)
-                               write_pipe_chunks(fileno(stderr), buf.data, buf.len);
-                       else
-                               write(fileno(stderr), buf.data, buf.len);
+               else
+                       write(fileno(stderr), buf.data, buf.len);
        }
 
        /* If in the syslogger process, try to write messages direct to file */