From b8188e1e649a982eeb5675e0ff72971e7ab764e3 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Sun, 11 Feb 2007 11:59:26 +0000 Subject: [PATCH] Fix for early log messages during postmaster startup getting lost when running as a service on Win32. Per report from Harald Armin Massa. --- src/backend/postmaster/postmaster.c | 6 +++--- src/backend/utils/error/elog.c | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 6b3bea6eb5..2c54ad7010 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.519 2007/02/10 14:58:54 petere Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.520 2007/02/11 11:59:25 mha Exp $ * * NOTES * @@ -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 7568b081af..3700c4ecdc 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.181 2007/01/20 21:40:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.182 2007/02/11 11:59:26 mha Exp $ * *------------------------------------------------------------------------- */ @@ -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 */ @@ -1693,9 +1695,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 -- 2.40.0