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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
use strict;
use warnings;
use Log::Dispatchouli;
use Test::More 0.88;
my $logger = Log::Dispatchouli->new_tester({
ident => 'proxy-test',
log_pid => 0,
to_self => 1,
});
sub are_events {
my ($comment, $want) = @_;
my @have = map { $_->{message} } @{ $logger->events };
$logger->clear_events;
is_deeply(\@have, $want, $comment);
}
$logger->log("1");
are_events("we can log a simple event", [ '1' ]);
$logger->set_prefix("A: ");
$logger->log("2");
are_events("simple log with prefix", [
'A: 2',
]);
my $proxy = $logger->proxy({
proxy_prefix => 'B: ',
});
$proxy->log("3");
are_events("log with proxy with prefix", [
'A: B: 3',
]);
$proxy->set_prefix('C: ');
$proxy->log("4");
$proxy->log({ prefix => 'D: ' }, "5");
are_events("log with proxy with prefix", [
'A: B: C: 4',
'A: B: C: D: 5',
]);
$logger->clear_prefix;
$proxy->log("4");
$proxy->log({ prefix => 'D: ' }, "5");
are_events("remove the logger's parent's prefix", [
'B: C: 4',
'B: C: D: 5',
]);
$logger->set_prefix('A: ');
my $proxprox = $proxy->proxy({
proxy_prefix => 'E: ',
});
$proxprox->log("6");
$proxprox->set_prefix('F: ');
$proxprox->log("7");
$proxprox->log({ prefix => 'G: ' }, "8");
are_events("second-order proxy, basic logging", [
'A: B: C: E: 6',
'A: B: C: E: F: 7',
'A: B: C: E: F: G: 8',
]);
$logger->log_debug("logger debug");
$proxy->log_debug("proxy debug");
$proxprox->log_debug("proxprox debug");
are_events("no debugging on at first", [ ]);
$proxy->set_debug(1);
$logger->log_debug("logger debug");
$proxy->log_debug("proxy debug");
$proxprox->log_debug("proxprox debug");
are_events("debugging in middle tier", [
'A: B: C: proxy debug',
'A: B: C: E: F: proxprox debug',
]);
$proxprox->set_debug(0);
$logger->log_debug("logger debug");
$proxy->log_debug("proxy debug");
$proxprox->log_debug("proxprox debug");
are_events("debugging in middle tier", [
'A: B: C: proxy debug',
]);
ok($logger->logger == $logger, "logger->logger == logger");
ok($proxy->logger == $logger, "proxy->logger == logger");
ok($proxprox->logger == $logger, "proxprox->logger == logger");
ok($logger->parent == $logger, "logger->parent == logger");
ok($proxy->parent == $logger, "proxy->parent == logger");
ok($proxprox->parent == $proxy, "proxprox->parent == proxy");
done_testing;
|