Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

(RhetTbull) Re: duplicating STDERR to a logfile...

by RhetTbull (Curate)
on May 09, 2002 at 02:03 UTC ( #165234=note: print w/replies, xml ) Need Help??

in reply to duplicating STDERR to a logfile...

My favorite way to handle this is with Filter::Handle. For example:
use warnings; use strict; use Carp; use Filter::Handle qw/subs/; open (LOGFILE, ">logfile") or die "could not open logfile: $!"; #filter STDERR through an anonymous sub Filter \*STDERR, sub {local $_ = "@_"; print LOGFILE "Filtered: $_ "; +$_}; #need a signal handler to capture warnings from carp and warn which ar +e not captured by Filter::Handle (but by capturing ourselves and prin +ting to STDERR, they do get picked up by Filter::Handle) $SIG{__WARN__} = sub {local $_ = "@_"; print STDERR $_}; #prints to both STDERR and to LOGFILE print STDERR "error!\n"; carp "carp!"; warn "warn!"; #STDERR will no longer be filtered through your sub UnFilter \*STDERR; print STDERR "not captured to log\n"; warn "this one got away"; close LOGFILE;
Update: Added signal handler to capture output of warn and carp

Replies are listed 'Best First'.
Re: (RhetTbull) Re: duplicating STDERR to a logfile...
by cadphile (Beadle) on May 17, 2002 at 00:50 UTC
    Thanks RhetTbull -- This is the exact solution I was hunting for. Simple implementation, and it works just right.



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://165234]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2021-01-27 17:29 GMT
Find Nodes?
    Voting Booth?