perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <>
Subject RE: Mod Perl + Apache Error logs, extend DBILogger
Date Sat, 10 Jan 2004 18:48:08 GMT

This information is most helpful in understanding what is going on.
That would be the logical thing to think that the during the perlhandler
phase the content() gets sucked up and isn't available for 

I looked for more information about using Apache::Request->instance($r) and
only came up with a small snippet from:

"If you are using Apache::Request, it solves this problem for you with its instance() class
method, which allows Apache::Request to be a singleton. This means that whenever you call
Apache::Request->instance() within a single request you always get the same Apache::Request
object back."

This is what I have below, the problem I'm trying to solve is getting the params (text field
etc.) that were passed to a cgi script.  This Apache module is being called in my httpd.conf
by "PerlLogHandler Apache::ErrorLogger". 

It doesn't seem to be getting the params at this point from the POST, I'm probable calling
it wrong or using it in the wrong way ?   

 package Apache::ErrorLogger;
 use strict;
 use Apache::Constants qw( :common );
 use Apache::Log;
 use Apache::Request;

sub handler {
        my $r = shift->last;

        my $apr = Apache::Request->instance($r);
        my $content = $apr->content();

       &Bomb({display=>0, footer=>0, level=>3,  exit=>0, output=>'text',
                       error=>"Paramterts: >^..^< content: $content ",

        return OK;

-----Original Message-----
From: Tom Schindl []
Sent: Saturday, January 10, 2004 8:14 AM
To: Ben Carlson
Subject: Re: Mod Perl + Apache Error logs, extend DBILogger


I'm not sure whether I'm right or wrong. Your problem is that the 
logging phase is coming after the PerlHandler-phase and that $r->content 
from the PerlHandler-phase has already consumed the posted data.

To come across this problem you could use Apache::Request which works as 
a singleton any where to access the submitted parameters.
my $apr = Apache::Request->instance($r)


> What I would like to do is for a given request to a cgi program (or mason) if the script
causes an internal error (which should not happen in production, but does) I would like to
capture the parameters that were called from the cgi form so that later on I can look to see
what cgi program it was that caused the problems and what parameters the user used to cause
the problem.
> So far what I have works, except for getting information from $r->content(), what
I have done is placed the directive "PerlLogHandler Apache::ErrorLogger" which calls the script
below, which is placing information into the logfile.  The $r->args() call works, when
I place parameters in the URL after the '?' it does get this information.  What I really need
though is the content in the content() call.
> The form does have 'application/x-www-form-urlencoded' in the form tag.  Is the content()
not coming through because apache redirects to the error page ?  

This email transmission contains privileged and confidential information 
intended only for the use of the individual or entity named above.  Any 
unauthorized review, use, disclosure or distribution is prohibited and 
may be a violation of law.  If you are not the intended recipient or a 
person responsible for delivering this message to an intended recipient, 
please delete the email and immediately notify the sender via the email 
return address or  Thank you.

Reporting bugs:
Mail list info:

View raw message