weaken connections to log router; fixes for no current method name
Tyler Riddle [Wed, 7 Nov 2012 03:38:33 +0000 (19:38 -0800)]
lib/Object/Remote/Logging.pm
lib/Object/Remote/Logging/Logger.pm
lib/Object/Remote/Logging/Router.pm

index 22860ed..d2c92d1 100644 (file)
@@ -7,7 +7,7 @@ use Exporter::Declare;
 
 extends 'Log::Contextual';
 
-exports(qw( router ));
+exports(qw( router arg_levels ));
 
 sub router {
   our $Router_Instance ||= do {
index 16b278d..83e3a0e 100644 (file)
@@ -59,11 +59,15 @@ sub _log {
 
 sub _create_format_lookup {
   my ($self, $level, $metadata, $content) = @_;
+  my $method = $metadata->{method};
+  
+  $method = '(none)' unless defined $method;
+  
   return { 
     '%' => '%', t => $self->_render_time($metadata->{timestamp}),
     r => $self->_render_remote($metadata->{object_remote}),
     s => $self->_render_log(@$content), l => $level, 
-    p => $metadata->{package}, m => $metadata->{method},
+    p => $metadata->{package}, m => $method,
     f => $metadata->{filename}, i => $metadata->{line},
     
   };
index ffc51b9..ee40377 100644 (file)
@@ -1,6 +1,7 @@
 package Object::Remote::Logging::Router;
 
 use Moo;
+use Scalar::Util qw(weaken);
 
 with 'Log::Contextual::Role::Router';
 with 'Object::Remote::Role::LogForwarder';
@@ -65,7 +66,7 @@ sub handle_log_request {
  
   @caller_info = caller($caller_level + 1);
   $metadata{method} = $caller_info[3];
-  $metadata{method} =~ s/^${package}:://;
+  $metadata{method} =~ s/^${package}::// if defined $metadata{method};
   
   foreach my $logger ($self->_get_loggers(%metadata)) {
     $logger->$level([ $generator->(@args) ], \%metadata);
@@ -83,6 +84,7 @@ sub connect {
   }
 
   push(@{$self->_connections}, $wrapped);
+  weaken($self->_connections->[-1]);
 }
 
 sub _clean_connections {