当前位置: 首页 > 知识库问答 >
问题:

记录MongoEngine生成的原始查询

卞昀
2023-03-14

是否有一个更简单的方法来编写中间件或任何其他方式,我可以记录所有的查询。

共有1个答案

陶鸿畴
2023-03-14

我在我的项目中使用了pymongo.monitoring

import logging
from pymongo import monitoring

class CommandLogger(monitoring.CommandListener):

    def started(self, event):
        log.debug("Command {0.command}".format(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())

更多详细信息请参见:

  • Pymongo文档
  • 有关探查器的信息
 类似资料:
  • 问题内容: 我正在使用HTTP POST将数据发送到服务器。但是在服务器中,我没有收到数据。而且我不知道如何在客户端检查数据(或调试脚本)。但是在客户端,我正在获取HTTP 200,这意味着已发送数据。我也可以看到连接和数据发送成功。但是,登录服务器不包含数据(仅包含字节数)。 如何记录发送到服务器的原始POST数据? 仅供参考,此处客户端是功能非常有限的嵌入式设备。所以,这是问题。因此,我无法检

  • 在模型查询API不够用的情况下,你可以使用原始的sql语句。django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的sql语句。 警告 编写原始的sql语句时,应该格外小心。每次使用的时候,都要确保转义了参数中的任何控制字符,以防受到sql注入攻击。更多信息请参阅防止sql注入。 进行原始查询 r

  • Db类支持原生SQL查询操作,主要包括下面两个方法: query方法 query方法用于执行SQL查询操作,如果数据非法或者查询错误则返回false,否则返回查询结果数据集(同select方法)。 使用示例: Db::query("select * from think_user where status=1"); 如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务

  • 我正在我的应用程序中使用 ESAPI 记录器。Logger logger= ESAPI.getLogger(ABC.class) 在ABC课堂上。java,我们使用INFO级别打印日志。根据我们所知的定义,Info接受: 两个参数:信息(Logger.EventType type, java.lang.字符串消息) 三个参数:信息(Logger.EventType type, java.lang.

  • 由于常常使用简单的方式来执行原始/已经准备好的SQL查询,因此可以使用 sequelize.query 函数. 默认情况下,函数将返回两个参数 - 一个结果数组,以及一个包含元数据(受影响的行等)的对象. 请注意,由于这是一个原始查询,所以元数据(属性名称等)是具体的方言. 某些方言返回元数据 "within" 结果对象(作为数组上的属性). 但是,将永远返回两个参数,但对于MSSQL和MySQL