From 30adce89ca1233929040d574a77099dd797a03d1 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 | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index fb2c994a94..ad561f4178 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -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.39.5