Re: psql -L log errors

From: Felipe Santos <felipepts(at)gmail(dot)com>
To: Hans Ginzel <hans(at)matfyz(dot)cz>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: psql -L log errors
Date: 2015-03-11 16:25:17
Message-ID: CAPYcRiVzRA9goYYpjYmoOHcDpcO4deFM1DebPb28V9oMoaB37g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

2015-03-11 11:01 GMT-03:00 Hans Ginzel <hans(at)matfyz(dot)cz>:

> On Wed, Mar 11, 2015 at 08:47:13AM -0300, Felipe Santos wrote:
>
>> When you are using the "--log-file" clause, you are telling the psql to
>> redirect the normal output to the file indicated, but the error output
>> keeps being sent to the standard output device.
>> To redirect the error output you have to append it to the file you're
>> logging into.
>> To do that, do the following (both Win and Linux, replace the psql
>> arguments ofr yours) :
>> psql -U sample_user -W -c "select * from foo;" sample_database
>> --log-file=sample_file.txt 2>> sample_file.txt
>>
>
> Thank you for your answer, Felipe.
> Why the error output keeps being sent to the standard output device?
> Does it get sense to redirect only stdout to file when "--log-file" is
> used?
> Why not to also redirect stderr? Could the dup2() fuction be used for that?
> Or even better could the stderr be "teed" both to the log file and to the
> standard output device?
>
> Thanks
> Hans
>
> http://stackoverflow.com/questions/14543443/in-c-how-
> do-you-redirect-stdin-stdout-stderr-to-files-when-making-an-execvp-or
> https://github.com/goj/coreutils/blob/rm-d/src/tee.c
>
>

Why the error output keeps being sent to the standard output device?
Does it get sense to redirect only stdout to file when "--log-file" is used?
Because the error output is an operating system generic error output, it
means that ANY kind of error will be redirected to it, not only your SQL
Statements errors, so I think it makes sense to split them (my opinion only)

Why not to also redirect stderr? Could the dup2() fuction be used for that?
Really don't know

Or even better could the stderr be "teed" both to the log file and to the
standard output device?
Well, one way to achieve that is redirecting everything to the same file
and (on Linux and in another session) calling "tail -f sample_file.txt" to
watch the actual progress of your process. I am sure there must be other
ways, but this is the one I use the most.

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Little, Doug C 2015-03-16 15:23:04 psql sqlstate return code access
Previous Message Hans Ginzel 2015-03-11 14:01:12 Re: psql -L log errors