2009-05-05 94 views
1

什么是使python的日志记录模块与Apache/modpython一起工作的标准方式?登录mod_python/apache

我想调用mylog.warn('whatever'),并导致req.log_error()的调用,其中req是modpython请求。

有没有简单的方法来设置它?

回答

2

我从来没有这样做过,但看起来编写logging.Handler的子类应该不那么难。像这样的东西应该可以做到。我不能说我实际上已经尝试过,因为我目前没有安装mod_python,但你应该能够在某处调用logging.root.addHandler(ApacheLogHandler())并使其运行。因人而异。

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) 
-1

我们使用以下内容。它完全记录在here

  1. 我们使用logging.fileConfig和logging.ini文件。

  2. 每个模块使用logger= logging.getLogger(__name__)

  3. 然后我们就可以在我们的应用程序做logger.error( “等等等等等等”)。

它完美地工作。 logging.ini文件定义了日志文件的位置,以便我们可以将其保存在Web应用程序的其他日志文件中。