Я никогда не делал этого, но кажется, что написание подкласса logging.Handler
не должно быть таким сложным. Нечто подобное должно сработать. Я не могу сказать, что я на самом деле пробовал это, так как в настоящее время у меня не установлен mod_python, но вы должны быть в состоянии где-нибудь вызвать logging.root.addHandler(ApacheLogHandler())
и заставить его работать YMMV.
import logging
import apache
class ApacheLogHandler(logging.Handler):
LEVEL_MAP = {
logging.DEBUG: apache.APLOG_DEBUG,
logging.INFO: apache.APLOG_INFO,
logging.WARNING: apache.APLOG_WARNING,
logging.ERROR: apache.APLOG_ERR,
logging.CRITICAL: apache.APLOG_CRIT,
}
def __init__(self, request=None):
self.log_error = apache.log_error
if request is not None:
self.log_error = request.log_error
def emit(self,record):
apacheLevel = apache.APLOG_DEBUG
if record.levelno in ApacheLogHandler.LEVEL_MAP:
apacheLevel = ApacheLogHandler.LEVEL_MAP[record.levelno]
self.log_error(record.getMessage(), apacheLevel)