Added 'autoflush' to Catalyst::Log + enabled during setup
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Log.pm
old mode 100644 (file)
new mode 100755 (executable)
index b834a79..85613e3
@@ -13,6 +13,7 @@ our %LEVEL_MATCH = (); # Stored as additive, thus debug = 31, warn = 30 etc
 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');
 
@@ -118,6 +119,9 @@ sub _log {
         $body .= sprintf( "[%s] %s", $level, $message );
         $self->_body($body);
     }
+    if( $self->autoflush && !$self->abort ) {
+      $self->_flush;
+    }
 }
 
 sub _flush {
@@ -284,6 +288,14 @@ to use Log4Perl or another logger, you should call it like this:
 
     $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 );