my
%msg
;
sub
counter {
if
(
shift
->{message} =~ /(INFO|WARN).+(unknown\d|forward\d)/) {
$msg
{$2}{$1}++;
}
}
my
$log
= Log::Handler->new();
$log
->config(
config
=> {
forward
=> [
{
alias
=>
"forward1"
,
maxlevel
=>
"info"
,
minlevel
=>
"emerg"
,
priority
=> 2,
forward_to
=> \
&counter
,
message_layout
=>
"%L - forward1 %m"
,
},
{
alias
=>
"forward2"
,
maxlevel
=>
"info"
,
minlevel
=>
"emerg"
,
priority
=> 1,
forward_to
=> \
&counter
,
message_layout
=>
"%L - forward2 %m"
,
},
{
alias
=>
"forward3"
,
maxlevel
=>
"info"
,
minlevel
=>
"emerg"
,
priority
=> 3,
forward_to
=> \
&counter
,
message_layout
=>
"%L - forward3 %m"
,
},
{
maxlevel
=>
"info"
,
minlevel
=>
"emerg"
,
priority
=> 3,
forward_to
=> \
&counter
,
message_layout
=>
"%L - unknown1 %m"
,
},
],
},
);
$log
->warning(1);
$log
->info(1);
$log
->reload(
config
=> {
forward
=> [
{
alias
=>
"forward1"
,
maxlevel
=>
"warning"
,
minlevel
=>
"emerg"
,
priority
=> 2,
forward_to
=> \
&counter
,
message_layout
=>
"%T [%L] forward1 %m"
,
},
{
alias
=>
"forward3"
,
maxlevel
=>
"warning"
,
minlevel
=>
"emerg"
,
priority
=> 1,
forward_to
=> \
&counter
,
message_layout
=>
"%T [%L] forward3 %m"
,
},
{
alias
=>
"forward4"
,
maxlevel
=>
"warning"
,
minlevel
=>
"emerg"
,
priority
=> 1,
forward_to
=> \
&counter
,
message_layout
=>
"%T [%L] forward4 %m"
,
},
{
alias
=>
"forward5"
,
maxlevel
=>
"warning"
,
minlevel
=>
"emerg"
,
priority
=> 1,
forward_to
=> \
&counter
,
message_layout
=>
"%T [%L] forward5 %m"
,
},
{
maxlevel
=>
"warning"
,
minlevel
=>
"emerg"
,
priority
=> 3,
forward_to
=> \
&counter
,
message_layout
=>
"%L - unknown2 %m"
,
},
],
}
) or
die
$log
->errstr;
ok(1,
"reload"
);
$log
->warning(1);
$log
->info(1);
my
$f1
=
scalar
keys
%{
$msg
{forward1}};
my
$f2
=
scalar
keys
%{
$msg
{forward2}};
my
$f3
=
scalar
keys
%{
$msg
{forward3}};
my
$f4
=
scalar
keys
%{
$msg
{forward4}};
my
$f5
=
scalar
keys
%{
$msg
{forward5}};
ok(
$f1
== 2,
"checking forward1 keys ($f1)"
);
ok(
$f2
== 2,
"checking forward2 keys ($f2)"
);
ok(
$f3
== 2,
"checking forward3 keys ($f3)"
);
ok(
$f4
== 1,
"checking forward4 keys ($f4)"
);
ok(
$f5
== 1,
"checking forward5 keys ($f5)"
);
ok(
$msg
{forward1}{INFO} == 1,
"checking forward1 INFO ($msg{forward1}{INFO})"
);
ok(
$msg
{forward1}{WARN} == 2,
"checking forward1 WARN ($msg{forward1}{WARN})"
);
ok(
$msg
{forward2}{INFO} == 1,
"checking forward2 INFO ($msg{forward2}{INFO})"
);
ok(
$msg
{forward2}{WARN} == 1,
"checking forward2 WARN ($msg{forward2}{WARN})"
);
ok(
$msg
{forward3}{INFO} == 1,
"checking forward3 INFO ($msg{forward3}{INFO})"
);
ok(
$msg
{forward3}{WARN} == 2,
"checking forward3 WARN ($msg{forward3}{WARN})"
);
ok(
$msg
{forward4}{WARN} == 1,
"checking forward3 WARN ($msg{forward4}{WARN})"
);
ok(
$msg
{forward5}{WARN} == 1,
"checking forward3 WARN ($msg{forward5}{WARN})"
);
ok(
$msg
{forward5}{WARN} == 1,
"checking forward3 WARN ($msg{forward5}{WARN})"
);
ok(
$msg
{unknown1}{INFO} == 1,
"checking unknown1 INFO ($msg{unknown1}{INFO})"
);
ok(
$msg
{unknown1}{WARN} == 1,
"checking unknown1 INFO ($msg{unknown1}{WARN})"
);
ok(
$msg
{unknown2}{WARN} == 1,
"checking unknown2 INFO ($msg{unknown1}{WARN})"
);
ok(!
exists
$msg
{unknown2}{INFO},
"checking unknown2 INFO"
);