John Summerfield <pgtest@os2.ami.com.au> writes:
> I have postmaster configured to use syslog. Despite this, these messages appear on the terminal from which I start
it:
> 2001-09-03 23:44:37 [26371] DEBUG: recycled transaction log file 0000000000000044
Ah, I see what's causing that. elog.c does this to decide whether to
write on stderr:
/* write to terminal */
if (Use_syslog <= 1 || whereToSendOutput == Debug)
write(2, msg_buf, strlen(msg_buf));
Now, whereToSendOutput is initially Debug in a postmaster or standalone
backend, and it gets changed to Remote when a normal backend is forked
from the postmaster. The messages that John is seeing come from routine
checkpoint subprocesses, which are also forked off from the postmaster
--- and whereToSendOutput is never changed in that path.
It strikes me that perhaps we should have whereToSendOutput start out
as None in a postmaster (but it should still be Debug in a standalone
backend or bootstrap run).
Peter, I'm cc'ing you since you've messed with elog message handling
most recently. Do you have any thoughts about proper behavior here?
regards, tom lane