我用java的jpa访问MongoDB数据库,不用写crud语句。但目前碰到一个查询的问题,系统不返回结果,我想看看送到mongodb的具体查询语句到底是什么?以便排查错误,请问有相关的日志分析工具吗?
zale 已回答的问题
获取MongoDB 日志的方式:
一、客户端
- 使用 CommandListener,需要在客户端(mongo-java-driver) 注入自定义的 CommandListener,拦截命令后做日志输出(需注意性能),参考用法:https://mongodb.github.io/mongo-java-driver/4.0/driver/reference/monitoring/
- 修改 mongo-java-driver 的日志级别,配置模块:org.mongodb.driver=DEBUG。参考这个提问:https://mongoing.com/anspress/question/mongodb%e6%97%a5%e5%bf%97%e6%89%93%e5%8d%b0%e5%87%ba%e7%9a%84%e6%9c%8d%e5%8a%a1%e7%ab%af%e7%9a%84%e8%80%97%e6%97%b6%e9%97%ae%e9%a2%98
二、服务端
- (推荐)使用 mongo 的 profile 机制,可在服务端开启 profile 记录查看,参考用法:https://www.cnblogs.com/littleatp/p/8419647.html
- 使用 mtools,例如 mlogfilter 可以用来过滤服务端的日志,但前提是你的 SQL 要能输出到服务端日志(将慢日志阈值调低),参考用法:https://www.cnblogs.com/littleatp/p/9114471.html
- 如果启用了副本集,可以基于 oplog 查询,但比较麻烦。
程序猿甲 发表新评论
受益匪浅,谢啦!