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   610 use strict;
  15         17  
  15         464  
3 15     15   122 use warnings;
  15         17  
  15         359  
4 15     15   3856 use Shipwright::Util;
  15         32  
  15         903  
5 15     15   12760 use Log::Log4perl;
  15         598168  
  15         153  
6 15     15   747 use Scalar::Util qw/blessed/;
  15         25  
  15         3862  
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 33 my $class = shift;
22              
23 13         27 my $self = {};
24 13         33 bless $self, $class;
25              
26 13 100       111 if ( not Log::Log4perl->initialized ) {
27 8         71 $class->_initialize_log4perl(@_);
28             }
29 13         35729 return $self;
30             }
31              
32             sub _initialize_log4perl {
33 8     8   15 my $class = shift;
34 8         17 my $ref = $_[0];
35              
36 8         14 my ( $log_level, $log_file );
37              
38 8 50       64 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         24 my %hash = @_;
54 7         16 $log_level = $hash{log_level};
55 7         20 $log_file = $hash{log_file};
56             }
57              
58 8 100       30 $log_level = $log_level ? uc $log_level : 'FATAL';
59 8   50     51 $log_file ||= '-';
60 8 50       74 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__