Log-Dispatch-Message-Passing

 view release on metacpan or  search on metacpan

lib/Log/Dispatch/Message/Passing.pm  view on Meta::CPAN

package Log::Dispatch::Message::Passing;
use base qw(Log::Dispatch::Output);

use warnings;
use strict;
use Scalar::Util qw/ blessed /;
use Carp qw/ confess /;

our $VERSION = '0.009';

sub new {
  my ($class, %arg) = @_;
  confess("Need an 'output' argument") unless $arg{output};
  my $output = $arg{output};
  confess("output => $output must be an object which can ->consume")
    unless blessed($output) && $output->can('consume');

  my $self = { output => $output };

  bless $self => $class;

  # this is our duty as a well-behaved Log::Dispatch plugin
  $self->_basic_init(%arg);

  return $self;
}

sub log_message {
  my ($self, %p) = @_;
  $self->{output}->consume({%p});
}

=head1 NAME

Log::Dispatch::Message::Passing - log events to Message::Passing

=head1 SYNOPSIS

In your application code:

  use Log::Dispatch;
  use Log::Dispatch::Message::Passing;
  use Message::Passing::Filter::Encoder::JSON;
  use Message::Passing::Output::ZeroMQ;

  my $log = Log::Dispatch->new;

  $log->add(Log::Dispatch::Message::Passing->new(
        name      => 'myapp_aggregate_log',
        min_level => 'debug',
        output    => Message::Passing::Filter::Encoder::JSON->new(
            output_to => Message::Passing::Output::ZeroMQ->new(
                connect => 'tcp://192.168.0.1:5558',
            ),
        ),
  ));

  $log->warn($_) for qw/ foo bar baz /;

On your central log server:

  message-pass --input ZeroMQ --input_options '{"socket_bind":"tcp://*:5558"}' \
    --output File --output_options '{"filename":"myapp_aggregate.log"}'

=head1 DESCRIPTION

This provides a L<Log::Dispatch> log output system that sends logged events to
L<Message::Passing>.

This allows you to use any of the Message::Passing outputs or filters
to process log events and send them across the network, and you can use
the toolkit to trivially construct a log aggregator.

=head1 METHODS

=head2 C<< new >>

 my $table_log = Log::Dispatch::Message::Passing->new(\%arg);

This method constructs a new Log::Dispatch::Message::Passing output object.

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.401 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )