The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;

if (
   eval <<'EOE'
require Log::Log4perl;
die if $Log::Log4perl::VERSION < 1.29;
1
EOE
  ) {
   plan tests => 2;
} else {
   plan skip_all => 'Log::Log4perl 1.29 not installed'
}

use FindBin;
unlink 'myerrs.log' if -e 'myerrs.log';
Log::Log4perl->init("$FindBin::Bin/log4perl.conf");
use Log::Contextual qw( :log set_logger );
set_logger(Log::Log4perl->get_logger);

my @elines;

push @elines, __LINE__ and log_error { 'err FIRST' };

sub foo {
   push @elines, __LINE__ and log_error { 'err SECOND' };
}
foo();
open my $log, '<', 'myerrs.log';
my @datas = <$log>;
close $log;

is $datas[0], "file:t/log4perl.t line:$elines[0] method:main:: - err FIRST\n",
  'file and line work with Log4perl';
is $datas[1],
  "file:t/log4perl.t line:$elines[1] method:main::foo - err SECOND\n",
  'file and line work with Log4perl in a sub';

unlink 'myerrs.log';