my $level = $ENV{OBJECT_REMOTE_LOG_LEVEL};
my $format = $ENV{OBJECT_REMOTE_LOG_FORMAT};
my $selections = $ENV{OBJECT_REMOTE_LOG_SELECTIONS};
+ my $test_logging = $ENV{OBJECT_REMOTE_TEST_LOGGER};
my %controller_should_log;
unless (defined $ENV{OBJECT_REMOTE_LOG_FORWARDING} && $ENV{OBJECT_REMOTE_LOG_FORWARDING} ne '') {
- $ENV{OBJECT_REMOTE_LOG_FORWARDING} = 1;
+ $ENV{OBJECT_REMOTE_LOG_FORWARDING} = 0;
+ }
+
+ if ($test_logging) {
+ require Object::Remote::Logging::TestLogger;
+ router->connect(Object::Remote::Logging::TestLogger->new(
+ min_level => 'trace', max_level => 'error',
+ level_names => Object::Remote::Logging->arg_levels(),
+ ));
}
-
- return unless defined $level && $level ne '';
- $format = "[%l %r] %s" unless defined $format;
- $selections = __PACKAGE__ unless defined $selections;
- %controller_should_log = _parse_selections($selections);
{
no warnings 'once';
}
}
+ return unless defined $level && $level ne '';
+
+ $format = "[%l %r] %s" unless defined $format;
+ $selections = __PACKAGE__ unless defined $selections;
+ %controller_should_log = _parse_selections($selections);
+
my $logger = Object::Remote::Logging::Logger->new(
min_level => lc($level), format => $format,
level_names => Object::Remote::Logging::arg_levels(),
router()->connect(sub {
my $controller = $_[1]->{controller};
my $will_log = $controller_should_log{$controller};
+ my $remote_info = $_[1]->{object_remote};
$will_log = $controller_should_log{'*'} unless defined $will_log;
return unless $will_log;
#skip things from remote hosts because they log to STDERR
#when OBJECT_REMOTE_LOG_LEVEL is in effect
- return if $_[1]->{remote}->{connection_id};
- $logger
+ return if $remote_info->{forwarded};
+ return $logger;
});
}
Sub-classes of Object::Remote::Logging will have log messages forwarded automatically.
Loggers receive forwarded log messages exactly the same way as non-forwarded messages
except a forwarded message includes extra metadata about the remote interpreter. Log
-forwarding is enabled by default but comes with a performance hit; to disable it set the
-OBJECT_REMOTE_LOG_FORWARDING environment variable to 0. See L<Object::Remote::Logging::Router>.
+forwarding is disabled by default because it comes with a performance hit; to enable
+it set the OBJECT_REMOTE_LOG_FORWARDING environment variable to 1.
=head1 EXPORTABLE SUBROUTINES