1

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

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

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

4

2 回答 2

2

我从来没有做过,但似乎编写一个子类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)
于 2009-05-05T03:02:26.177 回答
-1

我们使用以下内容。它在此处完整记录。

  1. 我们将logging.fileConfig与 logging.ini 文件一起使用。

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

  3. 然后我们可以在整个应用程序中执行 logger.error("blah blah blah")。

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

于 2009-05-05T10:18:14.850 回答