1 package Object::Remote::LogRouter;
4 use Scalar::Util qw(blessed);
6 with 'Object::Remote::Role::LogForwarder';
8 has subscriptions => ( is => 'ro', required => 1, default => sub { [] } );
9 has description => ( is => 'rw', required => 1 );
15 my ($self, $logger, $selector) = @_;
16 my $subscription_list = $self->subscriptions;
18 my $subscription = [ $logger, $selector ];
20 push(@$subscription_list, $subscription);
25 #TODO turn this logic into a role
27 my ($self, $caller, $level) = @_;
31 foreach(@{ $self->subscriptions }) {
37 my ($logger, $selector) = @$_;
39 if ($selector->({ log_level => $level, package => $caller, caller_level => 2 })) {
40 push(@logger_list, $logger);
45 $self->_remove_dead_subscriptions;
51 sub _remove_dead_subscriptions {
53 my @ok = grep { defined $_ } @{$self->subscriptions};
54 @{$self->subscriptions} = @ok;