X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FStatistics.pm;h=7e491cd341fb23b1a686d1cccd91fcdfabbc4bff;hb=0c11ad0ee5c8407f6b87d6e15c62a1b445076dc0;hp=b60c44ea42507ac23b0a088b73f09297520de585;hpb=8432aecad1e05ec49a269c98aec6ad432bbe4de4;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/Statistics.pm b/lib/DBIx/Class/Storage/Statistics.pm index b60c44e..7e491cd 100644 --- a/lib/DBIx/Class/Storage/Statistics.pm +++ b/lib/DBIx/Class/Storage/Statistics.pm @@ -2,10 +2,11 @@ package DBIx::Class::Storage::Statistics; use strict; use warnings; -use base qw/Class::Accessor::Grouped/; +use base qw/DBIx::Class/; use IO::File; +use namespace::clean; -__PACKAGE__->mk_group_accessors(simple => qw/callback debugfh/); +__PACKAGE__->mk_group_accessors(simple => qw/callback _debugfh silence/); =head1 NAME @@ -16,7 +17,7 @@ DBIx::Class::Storage::Statistics - SQL Statistics =head1 DESCRIPTION This class is called by DBIx::Class::Storage::DBI as a means of collecting -statistics on it's actions. Using this class alone merely prints the SQL +statistics on its actions. Using this class alone merely prints the SQL executed, the fact that it completes and begin/end notification for transactions. @@ -46,22 +47,21 @@ be an IO::Handle compatible object (only the C method is used). Initially should be set to STDERR - although see information on the L environment variable. -=head2 print - -Prints the specified string to our debugging filehandle, which we will attempt -to open if we haven't yet. Provided to save our methods the worry of how -to display the message. +As getter it will lazily open a filehandle for you if one is not already set. =cut -sub print { - my ($self, $msg) = @_; - if(!defined($self->debugfh())) { +sub debugfh { + my $self = shift; + + if (@_) { + $self->_debugfh($_[0]); + } elsif (!defined($self->_debugfh())) { my $fh; my $debug_env = $ENV{DBIX_CLASS_STORAGE_DBI_DEBUG} || $ENV{DBIC_TRACE}; if (defined($debug_env) && ($debug_env =~ /=(.+)$/)) { - $fh = IO::File->new($1, 'w') + $fh = IO::File->new($1, 'a') or die("Cannot open trace file $1"); } else { $fh = IO::File->new('>&STDERR') @@ -69,12 +69,30 @@ sub print { } $fh->autoflush(); - $self->debugfh($fh); + $self->_debugfh($fh); } + $self->_debugfh; +} + +=head2 print + +Prints the specified string to our debugging filehandle. Provided to save our +methods the worry of how to display the message. + +=cut +sub print { + my ($self, $msg) = @_; + + return if $self->silence; + $self->debugfh->print($msg); } +=head2 silence + +Turn off all output if set to true. + =head2 txn_begin Called when a transaction begins. @@ -83,6 +101,8 @@ Called when a transaction begins. sub txn_begin { my $self = shift; + return if $self->callback; + $self->print("BEGIN WORK\n"); } @@ -94,6 +114,8 @@ Called when a transaction is rolled back. sub txn_rollback { my $self = shift; + return if $self->callback; + $self->print("ROLLBACK\n"); } @@ -105,6 +127,8 @@ Called when a transaction is committed. sub txn_commit { my $self = shift; + return if $self->callback; + $self->print("COMMIT\n"); } @@ -116,6 +140,8 @@ Called when a savepoint is created. sub svp_begin { my ($self, $name) = @_; + return if $self->callback; + $self->print("SAVEPOINT $name\n"); } @@ -127,7 +153,9 @@ Called when a savepoint is released. sub svp_release { my ($self, $name) = @_; - $self->print("RELEASE SAVEPOINT $name\n"); + return if $self->callback; + + $self->print("RELEASE SAVEPOINT $name\n"); } =head2 svp_rollback @@ -138,7 +166,9 @@ Called when rolling back to a savepoint. sub svp_rollback { my ($self, $name) = @_; - $self->print("ROLLBACK TO SAVEPOINT $name\n"); + return if $self->callback; + + $self->print("ROLLBACK TO SAVEPOINT $name\n"); } =head2 query_start @@ -172,12 +202,12 @@ sub query_end { 1; -=head1 AUTHORS +=head1 AUTHOR AND CONTRIBUTORS -Cory G. Watson +See L and L in DBIx::Class =head1 LICENSE -You may distribute this code under the same license as Perl itself. +You may distribute this code under the same terms as Perl itself. =cut