Index: t/unit_core_setup.t =================================================================== --- t/unit_core_setup.t (revision 0) +++ t/unit_core_setup.t (revision 0) @@ -0,0 +1,48 @@ +use strict; +use warnings; +use Catalyst::Runtime '5.70'; + +use Test::More tests => 18; + +{ + # Silence the log. + no warnings 'redefine'; + *Catalyst::Log::_send_to_log = sub {}; +} + +TESTDEBUG: { + package MyTestDebug; + use parent qw/Catalyst/; + __PACKAGE__->setup( + '-Debug', + ); +} + +ok my $c = MyTestDebug->new, 'Get debug app object'; +ok my $log = $c->log, 'Get log object'; +isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; +ok !$log->is_warn, 'Warnings should be disabled'; +ok !$log->is_error, 'Errors should be disabled'; +ok !$log->is_fatal, 'Fatal errors should be disabled'; +ok !$log->is_info, 'Info should be disabled'; +ok $log->is_debug, 'Debugging should be enabled'; +can_ok 'MyTestDebug', 'debug'; +ok +MyTestDebug->debug, 'And it should return true'; + + +TESTAPP: { + package MyTestLog; + use parent qw/Catalyst/; + __PACKAGE__->setup( + '-Log=warn,error,fatal' + ); +} + +ok $c = MyTestLog->new, 'Get log app object'; +ok $log = $c->log, 'Get log object'; +isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; +ok $log->is_warn, 'Warnings should be enabled'; +ok $log->is_error, 'Errors should be enabled'; +ok $log->is_fatal, 'Fatal errors should be enabled'; +ok !$log->is_info, 'Info should be disabled'; +ok !$log->is_debug, 'Debugging should be disabled'; Index: lib/Catalyst.pm =================================================================== --- lib/Catalyst.pm (revision 8175) +++ lib/Catalyst.pm (working copy) @@ -239,8 +239,10 @@ =head2 -Log -Specifies log level. + use Catalyst '-Log=warn,fatal,error'; +Specifies a comma-delimited list of log levels. + =head2 -Stats Enables statistics collection and reporting. You can also force this setting @@ -2173,14 +2175,17 @@ =cut sub setup_log { - my ( $class, $debug ) = @_; + my ( $class, $levels ) = @_; + my %levels = map { $_ => 1 } split /\s*,\s*/, $levels || ''; + unless ( $class->log ) { - $class->log( Catalyst::Log->new ); + $class->log( Catalyst::Log->new( keys %levels) ); } - my $env_debug = Catalyst::Utils::env_value( $class, 'DEBUG' ); - if ( defined($env_debug) ? $env_debug : $debug ) { + if (defined ) { + } my $env_debug = Catalyst::Utils::env_value( $class, 'DEBUG' ); + if (defined $env_debug or $levels{debug} ) { no strict 'refs'; *{"$class\::debug"} = sub { 1 }; $class->log->debug('Debug messages enabled');