Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

tee.pl --use-log-dispatch stdout_et_stderr.txt

7 views
Skip to first unread message

luc2

unread,
Nov 29, 2012, 4:30:35 AM11/29/12
to
bonjour,

j'aimerais rediriger STDOUT et STDERR vers un fichier. voici ce que j'ai fait :

#!/bin/env perl

use strict;
use warnings;

BEGIN
{
open (STDERR, "| tee -ai log.txt");
open (STDOUT, "| tee -ai log.txt");
}

my $d;
print "abc $d\n";

my $c = 1;
my $c = 2;

######################################################################

ca marche, cool. bon, je vais essayer de le faire sans utiliser de commande
externe, mais en utilisant Log::Dispatch :

#!/bin/env perl

use strict;
use warnings;

BEGIN
{
use Log::Dispatch;

my $log = Log::Dispatch->new
(
outputs =>
[
[
'File',
min_level => 'debug',
filename => 'log.txt',
mode => 'append'
],
[
'Screen',
min_level => 'debug'
]
]
);

$SIG{__WARN__} = sub
{
$log->debug( @_ );
};

{
package ToLogDispatch;

sub TIEHANDLE {
my ($pkg) = @_;
return bless {}, $pkg;
}

sub PRINT {
my @msg = @_;
shift @msg;
$log->debug( @msg );
}
}

tie *STDOUT, 'ToLogDispatch';
}

my $d;
print "abc $d\n";

my $c = 1;
my $c = 2;

######################################################################

ca marche mais... c'est pas un peu long par rapport a l'autre solution ?

0 new messages