use constant QUERY => 1 << 3;
use constant TRACE => 1 << 4;
use constant BACKTRACE_ON_ERROR => 1 << 5;
-use constant ALL => (1 << 6) - 1;
-use constant DEVEL => INFO | QUERY | TRACE | BACKTRACE_ON_ERROR;
+use constant REQUEST_TIMER => 1 << 6;
+use constant ALL => (1 << 7) - 1;
+use constant DEVEL => INFO | QUERY | TRACE | BACKTRACE_ON_ERROR | REQUEST_TIMER;
use constant FILE_TARGET => 0;
use constant STDERR_TARGET => 1;
use POSIX qw(strftime);
-
+use Time::HiRes qw(gettimeofday tv_interval);
use YAML;
use strict;
sub enable_sub_tracing {
my ($self) = @_;
- $self->{level} | TRACE;
+ $global_level |= TRACE;
}
sub disable_sub_tracing {
my ($self) = @_;
- $self->{level} & ~ TRACE;
+ $global_level &= ~ TRACE;
+}
+
+sub is_tracing_enabled {
+ my ($self) = @_;
+ return $global_level & TRACE;
}
sub _write {
join '/', qw(info debug1 debug2 query trace error_call_trace)[ grep { (reverse split //, sprintf "%05b", $_[0])[$_] } 0..5 ]
}
+sub begin_request {
+ my $self = shift;
+ return 1 unless ($global_level & REQUEST_TIMER);
+ $self->{request_start} = [gettimeofday];
+}
+
+sub end_request {
+ my $self = shift;
+ return 1 unless ($global_level & REQUEST_TIMER);
+ $self->_write("time", tv_interval($self->{request_start}));
+
+ $self->{calldepth} = 0;
+}
+
1;