}
$class->setup_finalize;
- # Should be the last thing we do so that user things hooking
- # setup_finalize can log..
- $class->log->_flush() if $class->log->can('_flush');
+
+ # Turn autoflush back off once setup is finished.
+ # TODO: this is being done purely for Static::Simple (legacy API), and has been suggested by
+ # mst to be removed and require/update Static::Simple to set this flag itself
+ $class->log->autoflush(0) if ($class->log->can('autoflush'));
+
return $class || 1; # Just in case someone named their Application 0...
}
unless ( $class->log ) {
$class->log( Catalyst::Log->new(keys %levels) );
}
+
+ # Turn on autoflush by default:
+ $class->log->autoflush(1) if ($class->log->can('autoflush'));
if ( $levels{debug} ) {
Class::MOP::get_metaclass_by_name($class)->add_method('debug' => sub { 1 });
has level => (is => 'rw');
has _body => (is => 'rw');
has abort => (is => 'rw');
+has autoflush => (is => 'rw');
has _psgi_logger => (is => 'rw', predicate => '_has_psgi_logger', clearer => '_clear_psgi_logger');
has _psgi_errors => (is => 'rw', predicate => '_has_psgi_errors', clearer => '_clear_psgi_errors');
$body .= sprintf( "[%s] %s", $level, $message );
$self->_body($body);
}
+ if( $self->autoflush && !$self->abort ) {
+ $self->_flush;
+ }
}
sub _flush {
$c->log->abort(1) if $c->log->can('abort');
+=head2 autoflush
+
+When enabled, messages are written to the log immediately instead of queued
+until the end of the request. By default, autoflush is enabled during setup,
+but turned back off thereafter. This is done purely for legacy support,
+specifically for L<Catalyst::Plugin::Static::Simple>, and may be changed in
+the future.
+
=head2 _send_to_log
$log->_send_to_log( @messages );