use strict; use warnings; use lib qw(t/lib); use Test::More tests => 4; use Log::Dispatch; use Log::Dispatch::TestUtil qw(cmp_deeply); use File::Temp qw( tempdir ); my $tempdir = tempdir( CLEANUP => 1 ); { my $emerg_log = File::Spec->catdir( $tempdir, 'emerg.log' ); # Short syntax my $dispatch0 = Log::Dispatch->new( outputs => [[ 'File', name => 'file', min_level => 'emerg', filename => $emerg_log ], ['+Log::Dispatch::Screen', name => 'screen', min_level => 'debug']] ); # Short syntax alternate (2.23) my $dispatch1 = Log::Dispatch->new( outputs => [ 'File' => { name => 'file', min_level => 'emerg', filename => $emerg_log }, '+Log::Dispatch::Screen' => { name => 'screen', min_level => 'debug' } ] ); # Long syntax my $dispatch2 = Log::Dispatch->new; $dispatch2->add( Log::Dispatch::File->new( name => 'file', min_level => 'emerg', filename => $emerg_log ) ); $dispatch2->add( Log::Dispatch::Screen->new( name => 'screen', min_level => 'debug' ) ); cmp_deeply( $dispatch0, $dispatch2, "created equivalent dispatchers - 0" ); cmp_deeply( $dispatch1, $dispatch2, "created equivalent dispatchers - 1" ); } { eval { Log::Dispatch->new(outputs => ['File']) }; like($@, qr/expected arrayref/, "got error for expected inner arrayref"); } { eval { Log::Dispatch->new(outputs => 'File') }; like($@, qr/not one of the allowed types: arrayref/, "got error for expected outer arrayref"); }