记录应用程序中mgo fire的所有查询

时间:2015-08-29 17:18:54

标签: go mgo

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

2 个答案:

答案 0 :(得分:3)

mgo的作者Gustavo Niemeyer的回答:github

  

有两种方法可以解决此问题:

     
      
  1. 启用MongoDB日志记录

         

    这与驱动程序(在这种情况下为mgo)无关,并且可以   在shell中启用或通过mgo运行相应的命令:

         

    http://grokbase.com/t/gg/mgo-users/152571ky82/how-to-show-query-log#20150209zwzki7mxjfigdzuqp245wskkl4

  2.   
  3. 启用mgo日志记录

         

    您可以通过标准软件包创建Logger来完成此操作   log.New函数并将其提供给mgo的SetLogger函数:

         

    http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/http://golang.org/pkg/log/#New

  4.         

    使用mgo.SetDebug来增加详细程度:

         

    http://gopkg.in/mgo.v2#SetLogger

因此,如果您已经设置了Logger,请启用调试模式。

答案 1 :(得分:1)

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

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

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