From: Magnus Hagander Date: Sun, 11 Feb 2007 15:12:21 +0000 (+0000) Subject: Fix for early log messages during postmaster startup getting lost when X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=ac3bb787f679904e54bbdd9202bc4c170d266251;p=users%2Fbernd%2Fpostgres.git Fix for early log messages during postmaster startup getting lost when running as a service on Win32. Per report from Harald Armin Massa. Backpatch to 8.2. --- diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index dd00cd69ab..4b175dfc68 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -202,8 +202,8 @@ static pid_t StartupPID = 0, BgWriterPID = 0, AutoVacPID = 0, PgArchPID = 0, - PgStatPID = 0, - SysLoggerPID = 0; + PgStatPID = 0; +pid_t SysLoggerPID = 0; /* Needs to be accessed from elog.c */ /* Startup/shutdown state */ #define NoShutdown 0 diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 61b42b7cb8..91898828bf 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -76,6 +76,8 @@ ErrorContextCallback *error_context_stack = NULL; sigjmp_buf *PG_exception_stack = NULL; +extern pid_t SysLoggerPID; + /* GUC parameters */ PGErrorVerbosity Log_error_verbosity = PGERROR_VERBOSE; char *Log_line_prefix = NULL; /* format for extra log line info */ @@ -1715,9 +1717,10 @@ send_message_to_server_log(ErrorData *edata) * 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. + * that's really a pipe to the syslogger process. Unless we're in the + * postmaster, and the syslogger process isn't started yet. */ - if ((!Redirect_stderr || am_syslogger) && pgwin32_is_service()) + if ((!Redirect_stderr || am_syslogger || (!IsUnderPostmaster && SysLoggerPID==0)) && pgwin32_is_service()) write_eventlog(edata->elevel, buf.data); else #endif