diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index 87951a6961c2267c91de54a51aa0709982553914..d019127c790b17e9b9e586bf3b4331e13b8f1fc3 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -18,7 +18,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.13 2005/03/10 07:14:03 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.14 2005/03/12 01:54:44 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -679,10 +679,9 @@ write_syslogger_file_binary(const char *buffer, int count) LeaveCriticalSection(&sysfileSection); #endif + /* can't use ereport here because of possible recursion */ if (rc != count) - ereport(LOG, - (errcode_for_file_access(), - errmsg("could not write to log file: %m"))); + write_stderr("could not write to log file: %s\n", strerror(errno)); } #ifdef WIN32 diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 80b222913ecff68cb89f0b4a7b35fcf95b4e1402..5dd564ef28167147dbb7fd454b38265f4bd3769a 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.157 2005/02/27 01:02:57 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.158 2005/03/12 01:54:44 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1557,7 +1557,6 @@ send_message_to_server_log(ErrorData *edata) appendStringInfoChar(&buf, '\n'); } - #ifdef HAVE_SYSLOG /* Write to syslog, if enabled */ if (Log_destination & LOG_DESTINATION_SYSLOG) @@ -1597,7 +1596,9 @@ send_message_to_server_log(ErrorData *edata) write_syslog(syslog_level, buf.data); } #endif /* HAVE_SYSLOG */ + #ifdef WIN32 + /* Write to eventlog, if enabled */ if (Log_destination & LOG_DESTINATION_EVENTLOG) { int eventlog_level; @@ -1628,19 +1629,23 @@ send_message_to_server_log(ErrorData *edata) write_eventlog(eventlog_level, buf.data); } #endif /* WIN32 */ + /* Write to stderr, if enabled */ if ((Log_destination & LOG_DESTINATION_STDERR) || whereToSendOutput == Debug) { #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, leave it to stderr because the - logger will capture it to a file. */ + /* + * 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. + */ if ((!Redirect_stderr || am_syslogger) && pgwin32_is_service()) write_eventlog(EVENTLOG_ERROR_TYPE, buf.data); else #endif - fprintf(stderr, "%s", buf.data); + fprintf(stderr, "%s", buf.data); } /* If in the syslogger process, try to write messages direct to file */