=head2 -Log
-Specifies log level.
+ use Catalyst '-Log=warn,fatal,error';
+
+Specifies a comma-delimited list of log levels.
=head2 -Stats
$c->log->debug(qq/Redirecting to "$location"/) if $c->debug;
$response->header( Location => $location );
- #Moose TODO: we should probably be using a predicate method here ?
- if ( !$response->body ) {
+ if ( !$response->has_body ) {
# Add a default body if none is already present
$response->body(
qq{<html><body><p>This item has moved <a href="$location">here</a>.</p></body></html>}
=head2 $c->setup_log
-Sets up log.
+Sets up log by instantiating a L<Catalyst::Log|Catalyst::Log> object and
+passing it to C<log()>. Pass in a comma-delimited list of levels to set the
+log to.
+
+This method also installs a C<debug> method that returns a true value into the
+catalyst subclass if the "debug" level is passed in the comma-delimited list,
+or if the C<$CATALYST_DEBUG> environment variable is set to a true value.
+
+Note that if the log has already been setup, by either a previous call to
+C<setup_log> or by a call such as C<< __PACKAGE__->log( MyLogger->new ) >>,
+that this method won't actually set up the log.
=cut
sub setup_log {
- my ( $class, $debug ) = @_;
+ my ( $class, $levels ) = @_;
+ my %levels;
unless ( $class->log ) {
- $class->log( Catalyst::Log->new );
+ $levels ||= '';
+ $levels =~ s/^\s+//;
+ $levels =~ s/\s+$//;
+ %levels = map { $_ => 1 } split /\s*,\s*/, $levels || '';
+ $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($env_debug) or $levels{debug} ) {
$class->Class::MOP::Object::meta()->add_method('debug' => sub { 1 });
$class->log->debug('Debug messages enabled');
}
chicks: Christopher Hicks
+David E. Wheeler
+
dkubb: Dan Kubb <dan.kubb-cpan@onautopilot.com>
Drew Taylor