While it is not logically necessary to ever have it, see
http://www.perlmonks.org/index.pl?node_id=703501 for an example of
someone trying to configure things so that a trace goes somewhere, he
tried to set
log4perl.appender.StdOut.min_level=trace
in the log file only to find that
trace is not a valid Log::Dispatch log level at
/Library/Perl/5.8.8/Log/Log4perl/Appender.pm line 77
Which is highly confusing because the documentation for Log::Log4perl
says very clearly that trace *is* a valid logging level.
I told the questioner how to make it work, but still I think the fix
should be made to avoid useless confusion.
And yes, I looked at the code, and I'm aware that there is no
non-hacky way to do it. Still it can be done. Here is a patch to do
it.
--- Dispatch.pm 2008-08-10 20:43:32.000000000 -0700
+++ Dispatch.pm.fix 2008-08-10 20:39:22.000000000 -0700
@@ -9,14 +9,14 @@
use Carp ();
-our $VERSION = '2.21';
+our $VERSION = '2.22';
our %LEVELS;
BEGIN
{
no strict 'refs';
- foreach my $l ( qw( debug info notice warning err error crit
critical alert emerg emergency ) )
+ foreach my $l ( qw( trace debug info notice warning err error
crit critical alert emerg emergency ) )
{
*{$l} = sub { my $self = shift;
$self->log( level => $l, message => "@_" ); };
--- Dispatch/Output.pm 2008-08-10 20:43:54.000000000 -0700
+++ Dispatch/Output.pm.fix 2008-08-10 20:43:48.000000000 -0700
@@ -12,7 +12,7 @@
use Carp ();
-our $VERSION = '1.26';
+our $VERSION = '1.27';
sub new
@@ -52,13 +52,17 @@
} );
# Map the names to numbers so they can be compared.
- $self->{level_names} = [ qw( debug info notice warning error
critical alert emergency ) ];
+ # We would like trace to be first, but we can't change the historical
+ # numbers for backwards compatibility reasons.
+ $self->{level_names} = [ qw( debug info notice warning error
critical alert emergency trace ) ];
my $x = 0;
$self->{level_numbers} = { ( map { $_ => $x++ } @{
$self->{level_names} } ),
err => 4,
crit => 5,
- emerg => 7 };
+ emerg => 7,
+ trace => -1 };
+ die $self->{level_numbers}{trace};
$self->{name} = $p{name};
@@ -70,7 +74,7 @@
$self->{max_level} =
( exists $p{max_level} ?
$self->_level_as_number($p{max_level}) :
- $#{ $self->{level_names} }
+ $#{ $self->{level_names} } - 1 # Skip trace
);
die "Invalid level specified for max_level" unless defined
$self->{max_level};
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
log4perl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel