Catalyst-Plugin-Log-Dispatch
view release on metacpan or search on metacpan
lib/Catalyst/Plugin/Log/Dispatch.pm view on Meta::CPAN
foreach my $tlogc ( @{ $c->config->{'Log::Dispatch'} } ) {
my %logc = %{$tlogc};
if ( $logc{'class'} eq 'STDOUT' or $logc{'class'} eq 'STDERR' ) {
my $io = IO::Handle->new;
$io->fdopen( fileno( $logc{'class'} ), 'w' );
$logc{'class'} = 'Handle';
$logc{'handle'} = $io;
}
my $class = sprintf( "Log::Dispatch::%s", $logc{'class'} );
delete $logc{'class'};
$logc{'callbacks'} = [$logc{'callbacks'}] if(ref($logc{'callbacks'}) eq 'CODE');
if(exists $logc{'format'} and defined $Log::Dispatch::Config::CallerDepth ) {
my $callbacks = Log::Dispatch::Config->format_to_cb($logc{'format'},0);
if(defined $callbacks) {
$logc{'callbacks'} = [] unless($logc{'callbacks'});
push(@{$logc{'callbacks'}}, $callbacks);
}
}
if( exists $logc{'format_o'} and length( $logc{'format_o'} ) ) {
my $callbacks = Catalyst::Plugin::Log::Dispatch->_format_to_cb_o($logc{'format_o'},0);
if(defined $callbacks) {
$logc{'callbacks'} = [] unless($logc{'callbacks'});
push(@{$logc{'callbacks'}}, $callbacks);
}
}
elsif(!$logc{'callbacks'}) {
$logc{'callbacks'} = sub { my %p = @_; return "$p{message}\n"; };
}
$class->use or die "$@";
my $logb = $class->new(%logc);
$logb->{rtf} = $logc{real_time_flush} || 0;
$c->log->add( $logb );
}
if ($old_log && defined __log_dispatch_get_body( $old_log ) ) {
my @old_logs;
foreach my $line ( split /\n/, __log_dispatch_get_body( $old_log ) ) {
lib/Catalyst/Plugin/Log/Dispatch.pm view on Meta::CPAN
local $Log::Dispatch::Config::CallerDepth += 1;
local $Catalyst::Plugin::Log::Dispatch::CallerDepth += 3;
if( keys( %{ $self->{outputs} } ) ) {
foreach (keys %{ $self->{outputs} }) {
my %h = %p;
$h{name} = $_;
if( $self->{outputs}->{$_}->{rtf} ) {
$self->{outputs}->{$_}->log(%h);
}
else {
$h{message} = $self->{outputs}->{$_}->_apply_callbacks(%h)
if($self->{outputs}->{$_}->{callbacks});
push(@{$self->_body}, \%h);
}
}
}
else {
push(@{$self->_body}, \%p);
}
};
}
}
lib/Catalyst/Plugin/Log/Dispatch.pm view on Meta::CPAN
return $self->SUPER::level_is_valid(@_);
}
sub _flush {
my $self = shift;
if ( $self->abort || !(scalar @{$self->_body})) {
$self->abort(undef);
}
else {
foreach my $p (@{$self->_body}) {
local $self->{outputs}->{$p->{name}}->{callbacks} = undef;
$self->{outputs}->{$p->{name}}->log(%{$p});
}
}
$self->_body([]);
}
1; # Magic true value required at end of module
__END__
( run in 0.607 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )