我需要在Django应用程序中记录MongoEngine生成的所有查询。
我无法使用cursor._query()
,因为我需要记录所有MongoEngine文档的查询。
日志记录应该在应用程序级别而不是数据库级别完成,因此将MongoDB分析级别设置为2将无济于事。
我发现了这个gist,这看起来很有帮助,但我无法理解。
是否有更简单的方法来编写中间件或以其他任何方式记录所有查询。
答案 0 :(得分:1)
我在项目中使用了pymongo.monitoring
。
import logging
from pymongo import monitoring
class CommandLogger(monitoring.CommandListener):
def started(self, event):
logging.info("Command {0.command_name} with request id "
"{0.request_id} started on server "
"{0.connection_id}".format(event))
def succeeded(self, event):
logging.info("Command {0.command_name} with request id "
"{0.request_id} on server {0.connection_id} "
"succeeded in {0.duration_micros} "
"microseconds".format(event))
def failed(self, event):
logging.info("Command {0.command_name} with request id "
"{0.request_id} on server {0.connection_id} "
"failed in {0.duration_micros} "
"microseconds".format(event))
monitoring.register(CommandLogger())
更详细的信息,请参见documentation