python - 登录 mod_python/apache

标签 python apache logging mod-python

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

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

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

最佳答案

我从来没有这样做过,但似乎编写 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)

关于python - 登录 mod_python/apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822875/

相关文章:

python - pandas:将 CSV 系列转换为数据框

python - 嵌套列表理解/合并嵌套列表

Php 套接字、Apache 和 CentOS 6.3 给出权限被拒绝

apache - 在现有站点上使用 Tomcat 部署 Grails 应用程序

ruby-on-rails - 如何实时共享我的 Rail 日志文件

Python 从命令行导入

apache - 将 CGI 参数传递给 Windows 上 Apache 中的可执行文件

java - Log4j2 的 RoutingAppender 的通配符模式

从 Kubernetes pod 中的 Google Cloud Endpoints 登录到 Stackdriver

python - 如何使用django filter icontains获取多个字段