1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
use strict;
use warnings FATAL => 'all';
use Test::More 0.88;
use File::Spec;
use File::Temp qw( tempdir );
use Log::Dispatch;
my $dir = tempdir( CLEANUP => 1 );
# test that the same handle is returned if close-on-write is not set...
{
my $logger = Log::Dispatch->new(
outputs => [
[
'File',
min_level => 'debug',
newline => 1,
name => 'no_caw',
filename => File::Spec->catfile( $dir, 'no_caw.log' ),
close_after_write => 0,
],
[
'File',
min_level => 'debug',
newline => 1,
name => 'caw',
filename => File::Spec->catfile( $dir, 'caw.log' ),
close_after_write => 1,
],
],
);
ok(
$logger->output('no_caw')->{fh},
'no_caw output has created a fh before first write'
);
ok(
!$logger->output('caw')->{fh},
'caw output has not created a fh before first write'
);
$logger->log( level => 'info', message => 'first message' );
is(
_slurp( $logger->output('no_caw')->{filename} ),
"first message\n",
'first line from no_caw output'
);
is(
_slurp( $logger->output('caw')->{filename} ),
"first message\n",
'first line from caw output'
);
my %handle = (
no_caw => $logger->output('no_caw')->{fh},
caw => $logger->output('caw')->{fh},
);
$logger->log( level => 'info', message => 'second message' );
is(
_slurp( $logger->output('no_caw')->{filename} ),
"first message\nsecond message\n",
'full content from no_caw output'
);
is(
_slurp( $logger->output('caw')->{filename} ),
"first message\nsecond message\n",
'full content from caw output'
);
# check the filehandles again...
is(
$logger->output('no_caw')->{fh},
$handle{no_caw},
'handle has not changed when not using CAW'
);
is(
$logger->output('caw')->{fh},
undef,
'handle is deleted when using CAW'
);
}
done_testing();
sub _slurp {
open my $fh, '<', $_[0]
or die "Cannot read $_[0]: $!";
my $s = do {
local $/ = undef;
<$fh>;
};
close $fh or die $!;
return $s;
}
|