File: 201_log_dispatch_example.t

package info (click to toggle)
libbread-board-perl 0.37-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 716 kB
  • sloc: perl: 5,494; xml: 394; makefile: 2; sh: 1
file content (64 lines) | stat: -rw-r--r-- 1,485 bytes parent folder | download | duplicates (6)
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
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;
use Test::Moose;

use Test::Requires
    'Log::Dispatch',
    'Log::Dispatch::File',
    'Log::Dispatch::Screen';

use Bread::Board;

my $c = container 'Logging' => as {
    service 'Logger' => (
        block => sub {
            my $s       = shift;
            my $c       = $s->parent;
            my $outputs = $c->get_sub_container('Outputs');
            my $log     = Log::Dispatch->new;
            foreach my $name ( $outputs->get_service_list ) {
                $log->add(
                    $outputs->get_service( $name )->get
                );
            }
            $log;
        }
    );

    container 'Outputs' => as {
        service 'File' => (
            block => sub {
                Log::Dispatch::File->new(
                    name      => 'file',
                    min_level => 'debug',
                    filename  => 'logfile'
                )
            }
        );
        service 'Screen' => (
            block => sub {
                Log::Dispatch::Screen->new(
                    name      => 'screen',
                    min_level => 'warning',
                )
            }
        );
    };
};

my $logger = $c->resolve( service => 'Logger' );
isa_ok($logger, 'Log::Dispatch');

my $screen = $logger->output('screen');
isa_ok($screen, 'Log::Dispatch::Screen');

my $file = $logger->output('file');
isa_ok($file, 'Log::Dispatch::File');

unlink 'logfile';

done_testing;