Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

(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


Comment on (RhetTbull) Re: duplicating STDERR to a logfile...
Download Code
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.

    cheers

    Cadphile...

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (12)
As of 2015-07-31 11:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (276 votes), past polls