为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
人到中年有点甜 2021-11-01 17:06:59
如何在标准输出中使用 mgo 记录每个查询?我设置了记录器,但它显示了很多没有实际查询的信息。
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

mgo 的作者 Gustavo Niemeyer 的回答:http : //grokbase.com/t/gg/mgo-users/152571ky82/how-to-show-query-log#20150209zwzki7mxjfigdzuqp245wskkl4

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

  1. 通过启用 MongoDB 日志记录

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

    http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/

  2. 通过启用 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,请启用调试模式。


查看完整回答
反对 回复 2021-11-01
?
倚天杖

TA贡献1828条经验 获得超3个赞

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


q = bson.M{}

jsonString, _ := json.Marshal(q)

fmt.Printf("mgo query: %s\n", jsonString)

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


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信