什么是使python的日志记录模块与Apache/modpython一起工作的标准方式?登录mod_python/apache
我想调用mylog.warn('whatever'),并导致req.log_error()的调用,其中req是modpython请求。
有没有简单的方法来设置它?
什么是使python的日志记录模块与Apache/modpython一起工作的标准方式?登录mod_python/apache
我想调用mylog.warn('whatever'),并导致req.log_error()的调用,其中req是modpython请求。
有没有简单的方法来设置它?
我从来没有这样做过,但看起来编写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)
我们使用以下内容。它完全记录在here。
我们使用logging.fileConfig和logging.ini文件。
每个模块使用logger= logging.getLogger(__name__)
然后我们就可以在我们的应用程序做logger.error( “等等等等等等”)。
它完美地工作。 logging.ini文件定义了日志文件的位置,以便我们可以将其保存在Web应用程序的其他日志文件中。