diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 88d9182f297b19cc0f7a08be8f65e734900554a8..11231c90d6dff872e254f17d40cbb3ee753724c4 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -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 */