From f812dd91fef7e08354517c110a7592c7e9fe1745 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 19 Jul 2007 21:58:12 +0000 Subject: [PATCH] On second thought, the tests for what to do with stderr output are a 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 | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 88d9182f29..11231c90d6 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 */ -- 2.40.0