75 lines
1.3 KiB
Perl
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;
|