[Rt-commit] r6267 - in rt/branches/3.7-EXPERIMENTAL: .

ruz at bestpractical.com ruz at bestpractical.com
Wed Oct 25 00:47:42 EDT 2006


Author: ruz
Date: Wed Oct 25 00:47:42 2006
New Revision: 6267

Modified:
   rt/branches/3.7-EXPERIMENTAL/   (props changed)
   rt/branches/3.7-EXPERIMENTAL/lib/RT.pm.in

Log:
 r4024 at cubic-pc:  cubic | 2006-10-25 04:48:24 +0400
 * add support for $LogStackTraces = 'error' and other levels,
   so it possible to log stack traces only starting from some
   level


Modified: rt/branches/3.7-EXPERIMENTAL/lib/RT.pm.in
==============================================================================
--- rt/branches/3.7-EXPERIMENTAL/lib/RT.pm.in	(original)
+++ rt/branches/3.7-EXPERIMENTAL/lib/RT.pm.in	Wed Oct 25 00:47:42 2006
@@ -181,7 +181,19 @@
     $, = '';
     use Log::Dispatch 1.6;
 
-    unless ($RT::Logger) {
+    my %level_num = (
+        map( { $_ => } 0..7 ),
+        debug     => 0,
+        infog     => 1,
+        notice    => 2,
+        warning   => 3,
+        error     => 4, 'err' => 4,
+        critical  => 5, crit  => 5,
+        alert     => 6, 
+        emergency => 7, emerg => 7,
+    );
+
+    unless ( $RT::Logger ) {
 
         $RT::Logger = Log::Dispatch->new;
         my $simple_cb = sub {
@@ -192,13 +204,18 @@
 
             my $frame = 0; # stack frame index
             # skip Log::* stack frames
-            $frame++ while( caller($frame) && caller($frame) =~ /^Log::/ );
+            $frame++ while caller($frame) && caller($frame) =~ /^Log::/;
 
             my ($package, $filename, $line) = caller($frame);
-            $p{message} =~ s/(?:\r*\n)+$//;
-            my $str = "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n";
+            $p{'message'} =~ s/(?:\r*\n)+$//;
+            my $str = "[". gmtime(time) ."] [". $p{'level'} ."]: "
+                . $p{'message'} ." ($filename:$line)\n";
+
+            if ( my $level = RT->Config->Get('LogStackTraces') ) {
+                $level = 0 if $level =~ /^\d+$/;
+                $level = $level_num{ $level } || 0;
+                return $str unless $level_num{ $p{'level'} } >= $level;
 
-            if( $Config->Get('LogStackTraces') ) {
                 $str .= "\nStack trace:\n";
                 # skip calling of the Log::* subroutins
                 $frame++ while( caller($frame) && (caller($frame))[3] =~ /^Log::/ );


More information about the Rt-commit mailing list