让 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/