我想使用mongodb或redis为金字塔/塔架中的用户保存日志,但找不到创建中间件的文档。我该怎么做呢?
发布于 2011-02-09 14:34:35
标准中间件
class LoggerMiddleware(object):
'''WSGI middleware'''
def __init__(self, application):
self.app = application
def __call__(self, environ, start_response):
# write logs
try:
return self.app(environ, start_response)
except Exception, e:
# write logs
pass
finally:
# write logs
pass
在创建金字塔应用程序代码中:
from paste.httpserver import serve
from pyramid.response import Response
from pyramid.view import view_config
@view_config()
def hello(request):
return Response('Hello')
if __name__ == '__main__':
from pyramid.config import Configurator
config = Configurator()
config.scan()
app = config.make_wsgi_app()
# Put middleware
app = LoggerMiddleware(app)
serve(app, host='0.0.0.0')
发布于 2011-02-09 02:01:28
找不到任何文档是非常奇怪的,因为日志记录模块的Python文档非常冗长和完整:
http://docs.python.org/library/logging.html#handler-objects
您需要实现自己的MongoDBHandler,并通过pymongo使用MongoDB附加emit()方法。
发布于 2011-02-10 01:42:49
这种情况下的另一种选择是根本不使用中间件,而只是在金字塔中使用BeforeRequest事件。
from pyramid.events import NewRequest
import logging
def mylogger(event):
request = event.request
logging.info('request occurred')
config.add_subscriber(mylogger, NewRequest)
https://stackoverflow.com/questions/4936507
复制相似问题