使用 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 中添加以下行&lt;jmxConfigurator/&gt;。这允许通过 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 的使用

如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

Spring Boot MongoDB 使用加密字段

Spring Boot 双数据源Mybatis+MongoDB配置