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
|
#!/usr/bin/env perl
use strict;
use warnings;
use lib 't/lib';
use Test::More tests => 6;
use Log::Dispatch::Channels;
use Log::Dispatch::ToString;
my $logger = Log::Dispatch::Channels->new;
for my $channel (1..3) {
$logger->add_channel($channel);
$logger->add(Log::Dispatch::ToString->new(name => $channel,
min_level => 'debug'),
channels => $channel);
}
$logger->add(Log::Dispatch::ToString->new(name => 'all',
min_level => 'debug'));
$logger->add(Log::Dispatch::ToString->new(name => 'error',
min_level => 'error'));
$logger->add(Log::Dispatch::ToString->new(name => 'one_and_two',
min_level => 'info'),
channels => [qw/1 2/]);
my @messages = (
"only channel 1\n",
"it's an error\n",
"debugging 3\n",
"channels 1 and 3\n",
"everywhere\n",
);
my %should_get = (
1 => [qw/0 3 4/],
2 => [qw/1 4/],
3 => [qw/2 3 4/],
all => [qw/0 1 2 3 3 4 4 4/],
error => [qw/1 2/],
one_and_two => [qw/1 3/],
);
$logger->log(channels => 1, message => $messages[0], level => 'debug');
$logger->log(channels => 2, message => $messages[1], level => 'error');
$logger->log(channels => 3, message => $messages[2], level => 'error');
$logger->log(channels => [qw/1 3/], message => $messages[3], level => 'info');
$logger->log( message => $messages[4], level => 'debug');
for my $output (keys %should_get) {
my $log = join '', map { $messages[$_] } @{ $should_get{$output} };
is($logger->output($output)->get_string, $log,
"output $output received the correct logging calls");
}
|