Using Apache/1.3.27 (Unix) mod_gzip/1.3.26.1a mod_perl/1.27, perl 5.8.0.
Hi,
I'm working with some servers which print debugging messages through a wrapper function that calls Apache::Log::debug, here is a simplified version:
sub mydebug { my $msg = shift; Apache->server()->log()->debug($msg); }
Since Apache::Log::debug inserts the file and line number of its calling location into each log entry, this means that our log entries all contain the same file and line number, corresponding to the location of the Apache::Log::debug call inside 'mydebug'.
I'm trying to figure out how to get Apache::Log to use the correct file and line numbers, i.e. those of the caller of our wrapper function, instead. The perlfunc man page suggests that the 'goto &NAME' form of 'goto' can be used to trick 'caller', but rewriting the wrapper function in the following manner:
If you don't care about a little slowdown (and you probably don't, since it's a debug), you can do:
sub mydebug { my $msg = shift; my($filename, $line) = (caller)[1..2]; return eval <<EOE; #line $line $filename Apache->server()->log()->debug($msg); EOE
}
mod_perl 2.0 API allows you to explicitly path __LINE__ and __FILE__ arguments, to the logging functions.
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
-- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html