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

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


人到中年有点甜
浏览 172回答 2
2回答

慕神8447489

mgo 的作者 Gustavo Niemeyer 的回答:http : //grokbase.com/t/gg/mgo-users/152571ky82/how-to-show-query-log#20150209zwzki7mxjfigdzuqp245wskkl4有两种方法可以处理此问题:通过启用 MongoDB 日志记录这独立于驱动程序(在本例中为 mgo),并且可以在 shell 中启用或通过 mgo 运行相应的命令:http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/通过启用 mgo 日志记录您可以通过标准包的 log.New 函数创建一个 Logger 并将其提供给 mgo 的 SetLogger 函数来实现:http://golang.org/pkg/log/#New , http://gopkg.in/mgo.v2#SetLogger使用 mgo.SetDebug 增加详细程度:http://gopkg.in/mgo.v2#SetDebug因此,如果您已经设置了 Logger,请启用调试模式。

倚天杖

我无法让 mgo 使用 SetLogger 和 SetDebug 来记录查询。相反,我通过编组到 json 字符串然后打印来解决这个问题:q = bson.M{}jsonString, _ := json.Marshal(q)fmt.Printf("mgo query: %s\n", jsonString)如果您需要调试查询,您还可以将其输出复制/粘贴到标准 mongo 客户端
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go