File Coverage

blib/lib/Log/Any/Adapter/Redis.pm
Criterion Covered Total %
statement 32 44 72.7
branch 2 14 14.2
condition 1 3 33.3
subroutine 11 13 84.6
pod 0 2 0.0
total 46 76 60.5


line stmt bran cond sub pod time code
1 1     1   780 use 5.008001;
  1         4  
  1         49  
2 1     1   8 use strict;
  1         2  
  1         55  
3 1     1   22 use warnings;
  1         2  
  1         94  
4              
5             package Log::Any::Adapter::Redis;
6              
7             # ABSTRACT: Simple adapter for logging to redis
8             our $VERSION = '0.001';
9              
10 1     1   8 use Log::Any::Adapter::Util ();
  1         1  
  1         24  
11 1     1   673 use RedisDB;
  1         52175  
  1         35  
12 1     1   534 use Sys::Hostname;
  1         1055  
  1         49  
13              
14 1     1   5 use base qw/Log::Any::Adapter::Base/;
  1         1  
  1         240  
15              
16             my $trace_level = Log::Any::Adapter::Util::numeric_level('trace');
17              
18             sub new {
19 1     1 0 742 my ( $class, @args ) = @_;
20 1         10 return $class->SUPER::new(
21             host => 'localhost',
22             port => 6379,
23             database => 0,
24             ignore_reply => 0,
25             log_level => $trace_level,
26             log_hostname => 0,
27             log_pid => 0,
28             @args
29             );
30             }
31              
32             sub init {
33 1     1 0 11 my $self = shift;
34 1 50       8 $self->{log_level} = Log::Any::Adapter::Util::numeric_level( $self->{log_level} )
35             unless $self->{log_level} =~ /^\d+$/;
36 1 50 33     8 if ( !exists $self->{redis_db} || ref( $self->{redis_db} ) ne 'RedisDB' ) {
37 0           $self->{redis_db} = RedisDB->new(
38             host => $self->{host},
39             port => $self->{port},
40             database => $self->{database}
41             );
42 0 0         $self->{key} = 'LOG' if !exists $self->{key};
43             }
44             }
45              
46             foreach my $method ( Log::Any::Adapter::Util::logging_methods() ) {
47 1     1   5 no strict 'refs';
  1         1  
  1         153  
48             my $method_level = Log::Any::Adapter::Util::numeric_level($method);
49             *{$method} = sub {
50 0     0     my ( $self, $text ) = @_;
51 0 0         return if $method_level > $self->{log_level};
52 0           my $msg = sprintf( "[%s]", scalar(localtime) );
53 0 0         $msg .= sprintf( "[%s]", hostname() ) if $self->{log_hostname};
54 0 0         $msg .= sprintf( "[%s]", $$ ) if $self->{log_pid};
55 0           $msg .= sprintf( " %s", $text );
56 0 0         if ( $self->{ignore_reply} ) {
57 0           $self->{redis_db}->send_command( 'rpush', $self->{key}, $msg, RedisDB::IGNORE_REPLY );
58             } else {
59 0           $self->{redis_db}->rpush( $self->{key}, $msg );
60             }
61             };
62             }
63              
64             foreach my $method ( Log::Any::Adapter::Util::detection_methods() ) {
65 1     1   4 no strict 'refs';
  1         1  
  1         87  
66             my $base = substr( $method, 3 );
67             my $method_level = Log::Any::Adapter::Util::numeric_level($base);
68             *{$method} = sub {
69 0     0     return !!( $method_level <= $_[0]->{log_level} );
70             };
71             }
72              
73             !0; # 3a59124cfcc7ce26274174c962094a20
74              
75             __END__