Koha-clms/C4/SIP/Trapper.pm

75 lines
1.3 KiB
Perl

package C4::SIP::Trapper;
use Modern::Perl;
use Koha::Logger;
=head1 NAME
C4::SIP::Trapper - Module for capturing warnings for the SIP logger
=head2 TIEHANDLE
Ties the given class to this module.
=cut
sub TIEHANDLE {
my $class = shift;
bless [], $class;
}
=head2 PRINT
Captures warnings and directs them to Koha::Logger as well as STDERR
=cut
sub PRINT {
my $self = shift;
$Log::Log4perl::caller_depth += 3;
my $logger = Koha::Logger->get( { interface => 'sip', category => 'STDERR' } );
warn @_;
$logger->warn(@_);
$Log::Log4perl::caller_depth -= 3;
}
=head2 OPEN
We need OPEN in case Net::Server tries to redirect STDERR. This will
be tried when param log_file or setsid is passed.
=cut
sub OPEN {
return 1;
}
=head2 BINMODE
Suppress errors from Log::Log4perl::Appender::Screen
=cut
sub BINMODE {
my ( $self, $mode ) = @_;
binmode( STDOUT, $mode );
}
=head2 DIE signal handler
A global die handler to capture fatal errors and ensures they are logged.
When DIE is emitted, the message will be logged using Koha::Logger if available,
and also printed to stderr
=cut
$SIG{__DIE__} = sub {
my $msg = shift;
my $logger = Koha::Logger->get( { interface => 'sip', category => 'STDERR' } );
$logger->error($msg) if $logger;
die $msg;
};
1;