Logs vanish after partial log destination change

Started by hubert depesz lubaczewskiover 4 years ago3 messagesbugs
Jump to latest

Hi,
I'm not entirely sure if it's a bug, or what, but it caught me by
surprise.

Tested it on Linux, on 12.6 and 15devel.

I start with:
log_destination = 'syslog'
logging_collector = false

Logs to to syslog, all is well.

Then, I chance log_destination to 'csvlog' and logging_collector to
'on'.

And then I reload config.

I know I can chance log_destination, but I can't change
logging_collector. I assumed it means that logging will go to where they
did before.

But - logs are gone.
They are not in syslog. They are not in the new location.

When I tried it on test system with 15devel, I noticed by chance that
logs were redirected to terminal from which I issued `pg_ctl reload`
from. Well, that's hardly useful.

I'm not entirely sure what Pg should do in such case, perhaps just
restrict changing any log_* if one of changed gucs require restart?

But, it caught me by surprise, and figured that it might be problematic
for others too.

Best regards,

depesz

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: hubert depesz lubaczewski (#1)
Re: Logs vanish after partial log destination change

hubert depesz lubaczewski <depesz@depesz.com> writes:

I start with:
log_destination = 'syslog'
logging_collector = false

Logs to to syslog, all is well.

Then, I chance log_destination to 'csvlog' and logging_collector to
'on'.

And then I reload config.

I know I can chance log_destination, but I can't change
logging_collector. I assumed it means that logging will go to where they
did before.

No. You effectively set log_destination to empty, since the csvlog
item is ignored if the logging collector isn't active. That's not
a case that we should disallow, IMO. I do not think there's anything
that we can do here that wouldn't make other use-cases worse.

regards, tom lane

In reply to: Tom Lane (#2)
Re: Logs vanish after partial log destination change

On Sun, Sep 05, 2021 at 10:24:35AM -0400, Tom Lane wrote:

I know I can chance log_destination, but I can't change
logging_collector. I assumed it means that logging will go to where they
did before.

No. You effectively set log_destination to empty, since the csvlog
item is ignored if the logging collector isn't active. That's not
a case that we should disallow, IMO. I do not think there's anything
that we can do here that wouldn't make other use-cases worse.

Well, OK. Thanks,

depesz