in reply to Log4Perl - ANON issue

The try catch block is implemented as an anonymous subroutine which is causing your problem. You can specify the caller depth that Log4perl uses in the log entry.

local $Log::Log4perl::caller_depth = 2;

Just put this line somewhere before the call to the logger. The local should localize this change to only affect this part of your program.

Replies are listed 'Best First'.
Re: Log4Perl - ANON issue
by andreas1234567 (Vicar) on Jan 30, 2004 at 13:10 UTC
    You might want to consider to log the call stack when something fails. This way, you will easily see where the error originated, whether in an ANON block or not. Choose log level and error handling wisely..
    _show_call_stack() if (!$retval); [...] sub _show_call_stack { my $max_depth = 7; my $i = 1; if ($log->is_debug()) { $log->debug("--- Begin stack trace ---"); while ( (my @call = (caller($i++))) && ($i<$max_depth)) { $log->debug("$call[1] line $call[2] in function call[3]"); } $log->debug("--- End stack trace ---"); } }