File Coverage

lib/Log/Mini/Logger/FILE.pm
Criterion Covered Total %
statement 29 29 100.0
branch 5 6 83.3
condition n/a
subroutine 8 8 100.0
pod 0 1 0.0
total 42 44 95.4


line stmt bran cond sub pod time code
1             package Log::Mini::Logger::FILE;
2              
3 3     3   167430 use strict;
  3         5  
  3         125  
4 3     3   13 use warnings;
  3         5  
  3         200  
5 3     3   16 use IO::Handle;
  3         5  
  3         154  
6              
7 3     3   14 use base 'Log::Mini::Logger::Base';
  3         4  
  3         1189  
8              
9              
10             sub new
11             {
12 21     21 0 224151 my $self = shift->SUPER::new(@_);
13 21         54 my (%params) = @_;
14            
15 21         59 $self->{file} = $params{file};
16 21 100       64 $self->{is_synced} = $params{'synced'} ? 1 : 0;
17              
18 21         49 $self->{fh} = $self->_open_log_file();
19              
20 21         221 return $self;
21             }
22              
23             sub _print
24             {
25 22     22   35 my $self = shift;
26              
27 22 100       355 if (!-e $self->{file}) { # allows log rotate even if an app doesn't support HUP signal
28 1         7 $self->{fh} = $self->_open_log_file();
29             }
30            
31 22         40 my $fh = $self->{fh};
32              
33 22         424 print $fh @_;
34             }
35              
36             sub _open_log_file {
37 22     22   35 my $self = shift;
38              
39 22 50       1227 open my $fh, '>>', $self->{file} or die $!;
40              
41 22         144 $fh->autoflush($self->{is_synced});
42              
43 22         1234 return $fh;
44             }
45              
46             sub DESTROY
47             {
48 21     21   4069 close shift->{'fh'};
49            
50 21         181 return;
51             }
52              
53             1;