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   519 use strict;
  15         19  
  15         470  
3 15     15   120 use warnings;
  15         17  
  15         339  
4 15     15   3807 use Shipwright::Util;
  15         31  
  15         928  
5 15     15   12180 use Log::Log4perl;
  15         588774  
  15         114  
6 15     15   756 use Scalar::Util qw/blessed/;
  15         23  
  15         3649  
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 39 my $class = shift;
22              
23 13         28 my $self = {};
24 13         31 bless $self, $class;
25              
26 13 100       116 if ( not Log::Log4perl->initialized ) {
27 8         74 $class->_initialize_log4perl(@_);
28             }
29 13         34007 return $self;
30             }
31              
32             sub _initialize_log4perl {
33 8     8   27 my $class = shift;
34 8         18 my $ref = $_[0];
35              
36 8         16 my ( $log_level, $log_file );
37              
38 8 50       68 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         3 $log_level = $ref->{log_level};
48 1         2 $log_file = $ref->{log_file};
49             }
50             else {
51              
52             # not ref at all
53 7         27 my %hash = @_;
54 7         15 $log_level = $hash{log_level};
55 7         19 $log_file = $hash{log_file};
56             }
57              
58 8 100       32 $log_level = $log_level ? uc $log_level : 'FATAL';
59 8   50     51 $log_file ||= '-';
60 8 50       78 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         43 Log::Log4perl->init( \%default );
72             }
73              
74             1;
75              
76             __END__