Fix for early log messages during postmaster startup getting lost when

running as a service on Win32.

Per report from Harald Armin Massa.
This commit is contained in:
Magnus Hagander 2007-02-11 11:59:26 +00:00
parent 4d160018d2
commit b8188e1e64
2 changed files with 9 additions and 6 deletions

View File

@ -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

View File

@ -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