[mod_python] Problems with logging.

Graham Dumpleton graham.dumpleton at gmail.com
Tue Nov 6 15:41:13 EST 2007


On 07/11/2007, Kathryn Van Stone <kvs at acm.org> wrote:
>
> I am currently using mod_python version 3.3.1 with Apache 2.2.4 (and
> Python 2.5.1).  I've notice a difference between using
> apache.log_error and req.log_error. I modified mptest.py to the
> following:
>
> from mod_python import apache
>
> def handler(req):
>      apache.log_error('Test log from apache', apache.APLOG_DEBUG)
>      req.log_error('Test log from request', apache.APLOG_DEBUG)
>      req.content_type = 'text/plain'
>      req.write('Hello World')
>      return apache.OK
>
>
> I modified the apache configuration to set the log level to debug.  I
> get the request log message, but not the apache log message. When the
> log level is raised to APLOG_NOTICE, I get both messages.

Known issue, or at least I knew about it. I can't see that I created
an issue for it in the bug tracker though. I also can't remember the
full details at the moment. I know I made sure I didn't make the same
mistake in mod_wsgi though. :-)

> Any thoughts on why there is a difference?  We have areas where
> getting the request object is a hassle and would like to use
> apache.log_error. (Also there are members of my team who don't like
> the 'requestobject.c(823)' showing up in the log as it adds almost no
> information)

That requestobject.c always show for DEBUG level statements is a
result of how Apache works, in that it in embeds the C code file/line
number of where ap_log_rerror() is called. It is non trivial and
perhaps not entirely reliable, to try and dynamically work out where
in the Python code the call to the Python wrapper for the function was
called. It may be possible to fudge things at the level of the call to
ap_log_rerror() and not pass APLOG_MARK as argument and split it out
into two separate zero arguments. Presume that ap_log_rerror() will
not crash if line information not supplied.

Graham


More information about the Mod_python mailing list