File Coverage

blib/lib/Shipwright/Logger.pm
Criterion Covered Total %
statement 34 36 94.4
branch 8 10 80.0
condition 1 2 50.0
subroutine 7 7 100.0
pod 1 1 100.0
total 51 56 91.0


line stmt bran cond sub pod time code
1             package Shipwright::Logger;
2 15     15   363 use strict;
  15         50  
  15         348  
3 15     15   79 use warnings;
  15         21  
  15         302  
4 15     15   2240 use Shipwright::Util;
  15         38  
  15         859  
5 15     15   8095 use Log::Log4perl;
  15         489602  
  15         69  
6 15     15   797 use Scalar::Util qw/blessed/;
  15         33  
  15         3352  
7              
8             =head1 NAME
9              
10             Shipwright::Logger - Log
11              
12             =head1 SYNOPSIS
13              
14             use Shipwright::Logger;
15              
16             =head2 new
17              
18             =cut
19              
20             sub new {
21 13     13 1 38 my $class = shift;
22              
23 13         29 my $self = {};
24 13         26 bless $self, $class;
25              
26 13 100       64 if ( not Log::Log4perl->initialized ) {
27 8         53 $class->_initialize_log4perl(@_);
28             }
29 13         33910 return $self;
30             }
31              
32             sub _initialize_log4perl {
33 8     8   17 my $class = shift;
34 8         15 my $ref = $_[0];
35              
36 8         15 my ( $log_level, $log_file );
37              
38 8 50       46 if ( blessed $ref ) {
    100          
39              
40             # so it's an object, we assuming it has log_level and log_file subs
41 0         0 $log_level = $ref->log_level;
42 0         0 $log_file = $ref->log_file;
43             }
44             elsif ( ref $ref ) {
45              
46             # it's a hashref
47 1         2 $log_level = $ref->{log_level};
48 1         1 $log_file = $ref->{log_file};
49             }
50             else {
51              
52             # not ref at all
53 7         22 my %hash = @_;
54 7         32 $log_level = $hash{log_level};
55 7         20 $log_file = $hash{log_file};
56             }
57              
58 8 100       31 $log_level = $log_level ? uc $log_level : 'FATAL';
59 8   50     57 $log_file ||= '-';
60 8 50       65 my %default = (
61             'log4perl.rootLogger' => "$log_level,File",
62             'log4perl.appender.File.filename' => $log_file,
63             'log4perl.appender.File' => 'Log::Log4perl::Appender::File',
64             'log4perl.appender.File.stderr' => 1,
65             'log4perl.appender.File.layout' =>
66             'Log::Log4perl::Layout::PatternLayout',
67             'log4perl.appender.File.layout.ConversionPattern' =>
68             $log_file eq '-' ? '%m%n' : '%d %p> %F{1}:%L %M - %m%n',
69             );
70              
71 8         34 Log::Log4perl->init( \%default );
72             }
73              
74             1;
75              
76             __END__