has description => ( is => 'rw', required => 1 );
sub before_import { }
-sub after_import {
- my ($self, $controller, $importer, $config) = @_;
- my $logger = $controller->arg_logger($config->{logger});
-
-# TODO need to review this concept, ignore these configuration values for now
-# my $package_logger = $controller->arg_package_logger($config->{package_logger});
-# my $default_logger = $config->{default_logger};
-#
-# #when installing a new selector this will be the default
-# #logger invoked unless otherwise specified
-# $self->{default_logger} = $default_logger;
-#
-# #if the logger configuration value is specified
-# #then all logs given to the router will also be
-# #delivered to that logger
-# if (defined($logger)) {
-# $self->add_selector(sub { 1 }, $logger);
-# }
-#
-# #if the configuration specifies a package logger
-# #build a selector that matches the package and
-# #install it
-# if (defined($package_logger)) {
-# $self->add_selector( sub { $_->{package} eq $importer }, $package_logger );
-# }
-}
+sub after_import { }
sub subscribe {
my ($self, $logger, $selector, $is_temp) = @_;
#this info to the selector is a good feature
local($_) = { level => $level, package => $caller };
if ($selector->(@values)) {
- #TODO resolve caller_level issues with routing
- #idea: the caller level will differ in distance from the
- #start of the call stack but it's a constant distance from
- #the end of the call stack - can that be exploited to calculate
- #the distance from the start right before it's used?
- #
- #newer idea: in order for log4perl to work right the logger
- #must be invoked in the exported log_* method directly
- #so by passing the logger down the chain of routers
- #it can be invoked in that location and the caller level
- #problem doesn't exist anymore
+ #TODO issues with caller_level have not been resolved yet
+ #when a logger crosses an object::remote::connection so
$logger = $logger->($caller, { caller_level => -1 });
-
+
+ #TODO there is a known issue with the interaction of this
+ #routed logging scheme and objects proxied with Object::Remote.
+ #Specifically the loggers must be invoked with a calling
+ #depth of 0 which isn't possible using a logger that has
+ #been proxied which is what happens with routed logging
+ #if the logger is created in one Perl interpreter and the
+ #logging happens in another
$logger->$level($log_meth->(@values))
if $logger->${\"is_$level"};
}