use strict; use warnings; use Test::More tests => 15; use Log::Handler; my $CHECKED = 0; my %PATTERN = ( '%L' => 'level', '%T' => 'time', '%D' => 'date', '%P' => 'pid', '%H' => 'hostname', '%C' => 'caller', '%p' => 'package', '%f' => 'filename', '%l' => 'line', '%s' => 'subroutine', '%S' => 'progname', '%r' => 'runtime', '%t' => 'mtime', '%m' => 'message', ); my %PATTERN_REC = map { $_ => 0 } values %PATTERN; sub check_struct { my $m = shift; foreach my $name (keys %$m) { if (exists $PATTERN_REC{$name}) { $PATTERN_REC{$name}++; } } } my $log = Log::Handler->new(); $log->add( forward => { forward_to => \&check_struct, maxlevel => 'debug', minlevel => 'debug', message_layout => '', message_pattern => [ keys %PATTERN ], } ); ok(1, 'new'); $log->debug('foo'); while ( my ($n, $v) = each %PATTERN_REC ) { ok($v, "test pattern $n"); }