remove some dead comments; fix some bad whitespace
[scpubgit/Object-Remote.git] / lib / Object / Remote / Logging / LogAnyInjector.pm
CommitLineData
0cdad12d 1package Object::Remote::Logging::LogAnyInjector;
2
e5fe4a98 3#Experimental object that can be used to receive Log::Any
4#generated log messages and inject them into the log router
5
0cdad12d 6use Moo;
7use Object::Remote::Logging qw( router );
8use Carp qw(croak);
9
10BEGIN {
11 our %LEVEL_NAME_MAP = (
12 #key is Log::Any log level name or alias and value is Object::Remote::Logging
13 #log level name
14 trace => 'trace', debug => 'debug', info => 'info', notice => 'verbose',
15 warning => 'warn', error => 'error', fatal => 'fatal',
16 critical => 'error', alert => 'error', 'emergency' => 'error',
17 inform => 'info', warn => 'warn', err => 'error', crit => 'error',
18 );
19}
20
21sub AUTOLOAD {
22 my ($self, @content) = @_;
23 (my $log_level) = (our $AUTOLOAD =~ /([^:]+)$/);
24 my $generator;
25 my $log_contextual_level;
26 our %LEVEL_NAME_MAP;
27
28 #just a proof of concept - support for the is_ methods can
74937354 29 #be done but requires modifications to the router
0cdad12d 30 return 1 if $log_level =~ m/^is_/;
31 #skip DESTROY and friends
32 return if $log_level =~ m/^[A-Z]+$/;
33
42ff5efb 34 if ($log_contextual_level = $LEVEL_NAME_MAP{$log_level}) {
35 $generator = sub { @content };
36 } elsif(($log_level =~ s/f$//) && ($log_contextual_level = $LEVEL_NAME_MAP{$log_level})) {
37 my $format = shift(@content);
38 $generator = sub { sprintf($format, @content) };
0cdad12d 39 } else {
42ff5efb 40 croak "invalid log level: $log_level";
0cdad12d 41 }
42ff5efb 42
0cdad12d 43 router->handle_log_request({
44 controller => 'Log::Any',
45 package => scalar(caller),
46 caller_level => 1,
47 level => $log_contextual_level,
48 }, $generator);
49
50 return;
51}
52
531;