Thread Log Handler und mehr: STDOUT, STDERR, warnings umleiten (5 answers)
Opened by bloonix at 2006-11-10 10:00

bloonix
 2006-11-13 11:02
#71616 #71616
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Moin zusammen,

warum wird hier die Fehlermeldung nicht an &_die_handler uebergeben?

(gekürztes Package)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package Handler;

use strict;
use warnings;
use Fcntl qw(:DEFAULT :flock);
use IO::Handle;
use Data::Dumper;

my $opts = {
  filename => './foo.bar',
  mode => O_WRONLY | O_APPEND | O_CREAT,
  umask => 0640,
};

my $self = bless $opts, __PACKAGE__;

open my $olderr, ">&STDERR" or die $!;
$self->{olderr} = \$olderr;
sysopen(STDERR, $self->{filename}, $self->{mode}, $self->{umask}) or die $!;
$self->{fh} = \*STDERR;
$self->{olddie} = $SIG{__DIE__};
$SIG{__DIE__} = \&_die_handler("bar foo");
STDERR->autoflush(1);

sub _die_handler {
  print {$self->{fh}} Dumper(\@_);
  exit(9);
}

1;

die "foo bar";


$ cat foo.bar

$VAR1 = [
         'bar foo'
       ];


Es wird zwar bar foo an die Funktion uebergeben, aber nicht die
Fehlermeldung, die mit die "foo bar" uebergeben werden sollte.
Wenn ich einfach nur $SIG{__DIE__} = \&_die_handler; uebergebe,
dann wird zwar die DIE-Meldung uebergeben, aber ich moechte gerne
etwas mehr an die Routine uebergeben.

Gruss,
opi\n\n

<!--EDIT|opi|1163409178-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Log Handler und mehr: STDOUT, STDERR, warnings umleiten