记录mgo在应用程序中激发的所有查询

记录mgo在应用程序中激发的所有查询,go,mgo,Go,Mgo,如何在标准输出中使用mgo记录每个查询? 我设置了logger,但它在没有实际查询的情况下显示了大量信息。来自mgo的作者Gustavo Niemeyer的回答: 有两种方法可以处理此问题: 通过启用MongoDB日志记录 这独立于驱动程序(本例中为mgo),并且可以 在shell中或通过mgo运行相应命令来启用: 通过启用mgo日志记录 您可以通过标准软件包的 log.新功能,并将其提供给mgo的SetLogger功能: , 使用mgo.SetDebug增加详细度: 因此,如果已经设置了记

如何在标准输出中使用mgo记录每个查询?
我设置了logger,但它在没有实际查询的情况下显示了大量信息。

来自mgo的作者Gustavo Niemeyer的回答:

有两种方法可以处理此问题:

  • 通过启用MongoDB日志记录

    这独立于驱动程序(本例中为mgo),并且可以 在shell中或通过mgo运行相应命令来启用:

  • 通过启用mgo日志记录

    您可以通过标准软件包的 log.新功能,并将其提供给mgo的SetLogger功能:

    ,

  • 使用mgo.SetDebug增加详细度:


    因此,如果已经设置了记录器,请启用调试模式。

    我无法让mgo使用SetLogger和SetDebug记录查询。相反,我通过封送到json字符串,然后打印来解决这个问题:

    q = bson.M{}
    jsonString, _ := json.Marshal(q)
    fmt.Printf("mgo query: %s\n", jsonString)
    

    如果需要调试查询,还可以将其输出复制/粘贴到标准mongo客户端。

    注意,方法2将仅捕获Go mongo客户端实例发出的查询。它不会捕获其他Mongo客户端发出的查询。这对我不起作用。我可以看到mgo的很多输出,但看不到查询。