On 14.10.2008, at 20:22, todd.e.rinaldo wrote:

> Hi,
>
> I often have a helper routine in my code that logs an event and then
> does stuff. In some cases, it would be helpful if the line number that
> is logged was one level up from where I call debug.
>
> My question: does functionality exist in l4p similar to Test::More
> that would allow me to log events from higher in the stack than where
> I called debug?
>
> Test::More method:
> local $Test::Builder::Level++;

I don't think you can modify the behavior of %L, and hence SimpleLayout
in this way.  If you're ready to define your own layout, the feature can
be added via a custom placeholder (%A below).  See the appended code for
a way to do it.

Anno

----------------------------------------------------------------------
use Log::Log4perl qw(get_logger);
Log::Log4perl::init(\ *DATA);

log_this("here line " . __LINE__); # show real line number in log  
message
log_this("here line " . __LINE__); # again, one line down
exit;

sub log_this {
     get_logger()->info(shift); # %L will be this line number, %A won't
}

# helper sub for custom placeholder %A
sub line_one_above {
     my $i = 1;                                  # skip bottom level  
(main)
     ++ $i while caller($i) =~ /^Log::Log4perl/; # climb to user spoace
     ++ $i;                                      # one more (!)
     (caller($i))[2];                            # return line number
}

__DATA__
log4perl.rootLogger=INFO, screen_root

log4perl.appender.screen_root=Log::Log4perl::Appender::Screen
log4perl.appender.screen_root.layout=PatternLayout
log4perl.appender.screen_root.layout.ConversionPattern=%m at line %A  
(L=%L)%n

log4perl.PatternLayout.cspec.A = sub { line_one_above() }


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel

Reply via email to