使用 Spring Boot 记录 MongoDB 查询
Posted
技术标签:
【中文标题】使用 Spring Boot 记录 MongoDB 查询【英文标题】:Log MongoDB queries with Spring Boot 【发布时间】:2017-01-06 03:21:38 【问题描述】:是否可以在我的 Spring Boot 应用程序中记录所有 MongoDB 查询?我试过这个:
logging.level.org.springframework.data.document.mongodb=INFO
log4j.category.org.springframework.data.document.mongodb=INFO
但是没有用。
【问题讨论】:
请将日志级别更改为 DEBUG 并尝试。另外,请提供您具体看哪门课? 【参考方案1】:实际查询由 MongoTemplate 实例在 DEBUG 级别记录。
因此,将org.springframework.data.mongodb.core.MongoTemplate
的日志级别设置为DEBUG
将启用查询日志记录。
例如,只需将此行添加到您的 application.propertiese 文件中:
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
当然,您也可以使用 Spring Boot 提供的任何externalized configuration options 更改日志级别。
日志将是:
2018-11-26 19:23:16.574 调试 15668 --- [nio-8081-exec-2] os.data.mongodb.core.MongoTemplate :使用查询查找: “状态”:“活动”,“item._id”:“$oid”: "5bfbcde45ac3366ad70cdb9f" 字段:文档
【讨论】:
虽然这可能会提供问题的答案,但需要一些解释。请更新问题,解释此解决方案的工作原理和原因。 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。【参考方案2】:如果使用spring boot响应式mongodb,设置logging.level.org.springframework.data.mongodb.core.ReactiveMongoTemplate=DEBUG
【讨论】:
很确定这会用line too long
#Jokes 破坏我的代码样式检查器【参考方案3】:
这个方法有点长,但它解决了更多。我们将使用一个名为 Spring Boot Admin Server 的工具。
首先你需要包含一些依赖项
<!--Dependency for registering your app as a Spring Boot Admin Server-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.3.3</version>
</dependency>
<!--Provide a nice looking ui-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.3.3</version>
</dependency>
<!--Dependency for registering your app as a Spring Boot Admin Client-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
使用注解 @EnableAdminServer
使您的应用成为 Spring Boot Admin Server。
@SpringBootApplication
@EnableAdminServer
public class Application
public static void main(String[] args)
// ... your code as before ...
在您的application.properties
中添加以下内容:
将您的应用注册到仍然是您的应用的 Spring Boot 管理服务器
spring.boot.admin.url=http://localhost:8031
指示 Spring Boot Admin Server 在哪里找到客户端
spring.boot.admin.client.service-url=http://localhost:8031
spring.boot.admin.client.management-url=http://localhost:8031
spring.boot.admin.client.health-url=http://localhost:8031/health
在您的logback.xml
中添加以下行<jmxConfigurator/>
。这允许通过 JMX 配置 logback。更多信息here
... 和 瞧 你完成了。现在您可以在运行时更改任何记录器的调试级别。
我。只需访问您的 Spring Boot Admin Server 的 url - 在我们的例子中是 (http:/localhost:8031
)。
二。注册的应用程序(客户端)列表将显示在主页上。
三。针对已注册的客户点击Details
,这将带您到另一个页面。
四。单击Logging
选项卡,该选项卡将列出在您的应用程序中注册的所有记录器。
v.您可以更改日志级别,它将在运行时更改您的日志级别。这是您所期望的sn-p
要回答您的问题,如果您想查看 MongoDB 查询,只需查找 MongoTemplate
并将日志记录级别更改为 DEBUG
。
对于 Spring Boot Admin 的 2.*.* 版本,使用以下配置:
spring.boot.admin.client.url=http://localhost:8031
【讨论】:
您好,投反对票的人,请与 *** 社区分享您投反对票的原因。它可以帮助改进答案。以上是关于使用 Spring Boot 记录 MongoDB 查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中从 Mongodb 读取集合数据并定期发布到 kafka 主题中
spring boot系列spring boot 使用mongodb
Spring Boot:Spring Boot 中 MongoDB 的使用