Re: Silencing NOTICEs in Perl Pg - Mailing list pgsql-admin

From Andrew Perrin
Subject Re: Silencing NOTICEs in Perl Pg
Date
Msg-id Pine.LNX.4.21.0208301159170.27669-100000@perrin.socsci.unc.edu
Whole thread Raw
In response to Re: Silencing NOTICEs in Perl Pg  (David Wheeler <david@wheeler.net>)
Responses Re: Silencing NOTICEs in Perl Pg
List pgsql-admin
I don't know the Pg module at all, but if it uses warn() to dump those
notices to STDERR, you can use a sig handler to catch them:

$SIG{'__WARN__'} = sub {
    return if $_[0] =~ /^NOTICE:/;
    print STDERR join ("\n",@_);
    print STDERR "...at line " . caller(1) . "\n";
}



----------------------------------------------------------------------
Andrew J Perrin - http://www.unc.edu/~aperrin
Assistant Professor of Sociology, U of North Carolina, Chapel Hill
clists@perrin.socsci.unc.edu * andrew_perrin (at) unc.edu


On Thu, 29 Aug 2002, David Wheeler wrote:

> On Thursday, August 29, 2002, at 01:02  PM, Bruno Wolff III wrote:
>
> > On Thu, Aug 29, 2002 at 12:17:16 -0700,
> >   David Wheeler <david@wheeler.net> wrote:
> >> BTW, I missed the beginning of this thread, but based on the subject,
> >> I'd sure like to find out if there's a simple way to suppress NOTICEs
> >> using DBI/DBD::Pg. I've tried a number of tricks, but short of closing
> >> STDOUT and STDERR in my Perl script, I've not found a way to do it.
> >> PrintError => 0 doesn't do the trick.
> >
> > I do the following before doing anything with the database:
> > open(OLDERR, '>&STDERR');
> > close(STDERR);
> > open(STDERR, '>/dev/null');
>
> Thanks for the suggestion. Unfortunately, that doesn't allow me to
> filter out just the NOTICEs, and let everything else be printed. The
> solution I've come up with, for those who are interested, is either
> this:
>
> open STDERR, "| perl -e 'while (<>) { print unless /^NOTICE:  / }'"
>    or die "Cannot pipe STDERR: $!\n";
>
> Or this:
>
> open STDERR, "| grep -v '^NOTICE:  '"
>    or die "Cannot pipe STDERR to grep\n";
>
> The former will be more portable, since we already know we have Perl ;-)
>
> Thanks for the help!
>
> David
>
> --
> David Wheeler                                     AIM: dwTheory
> david@wheeler.net                                 ICQ: 15726394
> http://david.wheeler.net/                      Yahoo!: dew7e
>                                                 Jabber: Theory@jabber.org
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>


pgsql-admin by date:

Previous
From: Robert Treat
Date:
Subject: Re: Running postgres on a read-only file system
Next
From: Robert Treat
Date:
Subject: Re: Postgres Hidden Pitfalls