Thread: Logs vanish after partial log destination change

Logs vanish after partial log destination change

From
hubert depesz lubaczewski
Date:
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




Re: Logs vanish after partial log destination change

From
Tom Lane
Date:
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



Re: Logs vanish after partial log destination change

From
hubert depesz lubaczewski
Date:
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