diff --git a/lib/WebGUI/SQL.pm b/lib/WebGUI/SQL.pm index 55d7490cf..de5c892f5 100644 --- a/lib/WebGUI/SQL.pm +++ b/lib/WebGUI/SQL.pm @@ -856,10 +856,7 @@ Returns a reference to the current session. sub session { my $self = shift; if (@_) { - my $session = $self->{private_webgui_session} = shift; - require WebGUI::SQL::Trace; - open my $trace_handle, '>:via(WebGUI::SQL::Trace)', $session; - $self->trace('2|SQL', $trace_handle); + $self->{private_webgui_session} = shift; } return $self->{private_webgui_session}; } diff --git a/lib/WebGUI/SQL/Trace.pm b/lib/WebGUI/SQL/Trace.pm deleted file mode 100644 index e97d14366..000000000 --- a/lib/WebGUI/SQL/Trace.pm +++ /dev/null @@ -1,52 +0,0 @@ -package WebGUI::SQL::Trace; -use strict; -#use warnings; -use 5.008008; - -our $VERSION = '0.0.1'; - -sub PUSHED { - my ($class, $mode, $fh) = @_; - my $logger; - return bless \$logger, $class; -} - -sub OPEN { - my ($self, $session, $mode, $fh) = @_; - $$self = $session; - return 1; -} - -sub WRITE { - my ($self, $buf, $fh) = @_; - if ($buf =~ /\ABinding parameters: /) { - my $sql = $buf; - $sql =~ s/\ABinding parameters: //; - my $depth; - for ( $depth = 1; caller($depth); $depth++) { - my $package = caller($depth); - last - if $package !~ /\A(?:WebGUI::SQL|DBI|DBD)(?:\z|::)/; - } - local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + $depth + 1; - - $$self->log->debug("Query - $sql"); - } - return length($buf); -} - -sub CLOSE { - my $self = shift; - return 0; -} - -1; - -__END__ - -=head1 NAME - -PerlIO::via::WebGUI - Log DBI output to WebGUI - -=cut - diff --git a/lib/WebGUI/Session/ErrorHandler.pm b/lib/WebGUI/Session/ErrorHandler.pm index 9c4e24421..96f6a4dd6 100644 --- a/lib/WebGUI/Session/ErrorHandler.pm +++ b/lib/WebGUI/Session/ErrorHandler.pm @@ -203,8 +203,8 @@ The message to use. sub fatal { my $self = shift; my $message = shift; - @_ = ({ level => 'fatal', message => $message}); - goto $self->getLogger; + Sub::Uplevel::uplevel( 1, $self->getLogger, { level => 'fatal', message => $message}); + WebGUI::Error::Fatal->throw( error => $message ); } @@ -216,7 +216,25 @@ Returns a reference to the logger. =cut -sub getLogger { $_[0]->{_logger} } +sub getLogger { + my $self = shift; + if (my $req = $self->session->request) { + my $logger = $req->logger; + return $logger + if $logger; + } + + # Thanks to Plack, wG has been decoupled from Log4Perl + # However when called outside a web context, we currently still fall back to Log4perl + # (pending a better idea) + Log::Log4perl->init_once( $self->session->config->getWebguiRoot . "/etc/log.conf" ); + my $log4perl = Log::Log4perl->get_logger( $self->session->config->getFilename ); + sub { + my $args = shift; + my $level = $args->{level}; + $log4perl->$level( $args->{message} ); + }; +} #------------------------------------------------------------------- @@ -276,21 +294,6 @@ sub new { my $session = shift; my $logger = $session->request && $session->request->logger; - if ( !$logger ) { - - # Thanks to Plack, wG has been decoupled from Log4Perl - # However when called outside a web context, we currently still fall back to Log4perl - # (pending a better idea) - require Log::Log4perl; - Log::Log4perl->init_once( WebGUI::Paths->logConfig ); - my $log4perl = Log::Log4perl->get_logger( $session->config->getFilename ); - $logger = sub { - my $args = shift; - my $level = $args->{level}; - $log4perl->$level( $args->{message} ); - }; - } - bless { _session => $session, _logger => $logger }, $class; } @@ -364,6 +367,5 @@ sub warn { goto $self->getLogger; } - 1;