Hello mod_python developers.

I just joined this list (at the suggestion of Graham Dumpleton) to try
and get you guys to consider adding some glue to connect python >2.2
logging to Apache's logging.

This means adding a small extra source file to the mod_python
codebase. Here's my example:

   # A log handler for mod-python

   import logging
   from mod_python import apache

   class ProxyLogThing:
       """A proxy for default Apache logging."""

       def __init__(self):
           # No need to do anything.
           pass

       def log_error(msg, lvl):
           apache.log_error(msg, lvl)

   class ApacheLogHandler(logging.Handler):
       """A handler class which sends all logging to Apache."""

       def __init__(self, ref = None):
           """
           Initialize the handler (does nothing)
           """
           logging.Handler.__init__(self)

           if ref == None:
               self.ref = ProxyLogThing()
           else:
               self.ref = ref

           # Set up the thing
           self.level_mapping = { }

           # self.level_mapping[logging.CRITICAL] = apache.APLOG_ERR
           self.level_mapping[logging.ERROR] = apache.APLOG_ERR
           self.level_mapping[logging.WARNING] = apache.APLOG_WARNING
           self.level_mapping[logging.INFO] = apache.APLOG_INFO
           self.level_mapping[logging.debug] = apache.APLOG_DEBUG

       def emit(self, record):
           """Emit a record."""
           self.ref.log_error(record.msg, record.levelno)

   # End


As far as I can see there is no reason not to do this: it does not
create a dependency problem for anyone not using a Python without
logging; it's use is purely optional.

A very good reason for doing it is that it reduces dependancies for
anyone wanting to do this (and it's a very obvious thing to want to do
in any mod_python code).


I wonder what you all think about this?


BTW I'd be happy to maintain and support this if you agreed to include
it.


Nic Ferrier

Reply via email to