diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index 749076250..6e15474ef 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -155,6 +155,8 @@ sub handle { # } # ); # return; + + local $SIG{__DIE__} = sub { $session->log->error(@_); die @_; }; # Look for the template preview HTTP headers WebGUI::Asset::Template->processVariableHeaders($session); diff --git a/lib/WebGUI/Middleware/StackTrace.pm b/lib/WebGUI/Middleware/StackTrace.pm index 9c207106f..c71f5cb9a 100644 --- a/lib/WebGUI/Middleware/StackTrace.pm +++ b/lib/WebGUI/Middleware/StackTrace.pm @@ -20,9 +20,10 @@ BEGIN { $StackTraceClass = "Devel::StackTrace::WithLexicals"; } - my $old_fatal = *WebGUI::Session::Log::fatal{CODE}; no warnings 'redefine'; + my $old_fatal = *WebGUI::Session::Log::fatal{CODE}; + *WebGUI::Session::Log::fatal = sub { my $self = shift; my $message = shift; @@ -30,6 +31,15 @@ BEGIN { $old_fatal->($self, $message, @_); }; + my $old_error = *WebGUI::Session::Log::error{CODE}; + + *WebGUI::Session::Log::error = sub { + my $self = shift; + my $message = shift; + $self->{_stacktrace} = $StackTraceClass->new; + $old_error->($self, $message, @_); + }; + } sub call {