The wrapper-level variable probably should be localized by any class that wraps L4p: there's no guarantee that no-one will call an un-wrapped method in L4p and botch the sequcnes.
=head1 Using Log::Log4perl from wrapper classes If you don't use C<Log::Log4perl> as described above, but from a wrapper class (like your own Logging class which in turn uses C<Log::Log4perl>), the pattern layout will generate wrong data for %F, %C, %L and the like. Reason for this is that C<Log::Log4perl>'s loggers assume a static caller depth to the application that's using them. If you're using one (or more) wrapper classes, C<Log::Log4perl> will indicate where your logger classes called the loggers, not where your application called your wrapper, which is probably what you want in this case. But don't despair, there's a solution: Just increase the value of C<$Log::Log4perl::caller_depth> (defaults to 0) by one for every wrapper that's in between your application and C<Log::Log4perl>, then C<Log::Log4perl> will compensate for the difference. Using a local variable avoids problems with anyone who uses Log4perl directly; using ||= allows people to wrap YOUR wrappers without accidentally resetting the value too low. sub debug { local $Log::Log4perl::caller_depth ||= 1; ... } -- Steven Lembark +1 888 359 3508 Workhorse Computing 85-09 90th St [EMAIL PROTECTED] Woodhaven, NY 11421 ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ log4perl-devel mailing list log4perl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/log4perl-devel