屏蔽禁用jdbctemplate/restTemplate中控制台打印的[main] debug日志

本文介绍了一种有效解决Spring Boot项目启动后控制台Debug信息过多的问题。通过调整依赖设置,快速解决了由JdbcTemplate和RestTemplate导致的日志输出过多的情况。
部署运行你感兴趣的模型镜像

在spring-boot项目中用了JdbcTemplate和RestTemplate,项目启动后控制台debug刷个没完,人差点崩溃,类似这种日志
在这里插入图片描述
网上找了很多方法配置属性文件都不行,只有一种方式最终有用了,记录一下
在这里插入图片描述
修改依赖设置,立即生效。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

在使用 Spring 的 `JdbcTemplate` 进行数据库操作时,有时会遇到执行的 SQL 语句没有输出到控制台的情况,这可能会影响调试和问题排查。以下是可能导致 SQL 语句未输出的原因及解决方法。 ### 1. 日志级别未设置为 `DEBUG` Spring 的 `JdbcTemplate` 本身并不会直接打印 SQL 语句,而是通过日志框架(如 Logback 或 Log4j)记录 SQL 的执行信息。通常情况下,SQL 语句会在 `DEBUG` 级别下输出,如果日志级别未设置为 `DEBUG`,则无法看到 SQL 输出。 #### 解决方法 在日志配置文件中(如 `logback-spring.xml` 或 `application.properties`),将 `org.springframework.jdbc.core` 包的日志级别设置为 `DEBUG`。 ##### 使用 `logback-spring.xml` 配置 ```xml <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <logger name="org.springframework.jdbc.core" level="DEBUG"/> </configuration> ``` ##### 使用 `application.properties` 配置 ```properties logging.level.org.springframework.jdbc.core=DEBUG ``` 这样配置后,`JdbcTemplate` 执行 SQL 时会将语句输出到控制台[^3]。 --- ### 2. SQL 语句被参数化处理,未显示完整语句 当使用 `JdbcTemplate` 的 `update` 或 `query` 方法时,SQL 语句通常以参数化形式传递(如 `?` 占位符)。此时,日志中可能只会显示带有占位符的 SQL,而不是完整的 SQL 语句。 #### 解决方法 可以使用日志拦截工具(如 **P6Spy**)来捕获并打印完整的 SQL 语句。 ##### 配置 P6Spy 1. 添加 P6Spy 依赖到 `pom.xml`: ```xml <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency> ``` 2. 修改数据源配置: ```properties spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/your_database spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver ``` 3. 创建 `spy.properties` 文件: ```properties appender=com.p6spy.engine.logging.appender.StdoutLogger logMessageFormat=com.p6spy.engine.logging.format.Slf4JPrettySqlFormatter customLogMessageFormat=%(currentTime) | %(executionTime) | %(category) | connection %(connectionId): %(sql) ``` 配置完成后,P6Spy 会拦截所有 SQL 语句并打印完整的 SQL 到控制台。 --- ### 3. 日志框架未正确配置或冲突 如果项目中存在多个日志实现(如同时使用 Logback 和 Log4j),可能会导致日志输出不正常。 #### 解决方法 确保项目中只使用一个日志框架,并检查依赖冲突。可以通过以下方式排除冲突的日志依赖: ##### 在 `pom.xml` 中排除 Log4j ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> ``` --- ### 4. 使用 `JdbcTemplate` 时未启用日志输出 某些情况下,`JdbcTemplate` 可能未启用日志输出功能,尤其是在自定义配置中。 #### 解决方法 确保 `JdbcTemplate` 实例正确注入,并且未禁用日志输出功能。可以通过以下方式检查: ```java @Autowired private JdbcTemplate jdbcTemplate; ``` 确认 `JdbcTemplate` 的配置中未设置禁用日志的选项。 --- ### 5. 控制台日志被过滤或未正确显示 在某些开发工具(如 IntelliJ IDEA 或 Eclipse)中,控制台可能未正确显示所有日志信息,或者日志被过滤。 #### 解决方法 检查开发工具的日志过滤设置,确保没有过滤掉 `DEBUG` 级别的日志。此外,可以尝试将日志输出到文件,以确认是否为控制台显示问题。 --- ### 示例代码:验证 SQL 输出 以下是一个简单的 `JdbcTemplate` 查询示例,用于验证 SQL 是否输出到控制台: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; @Repository public class UserRepository { @Autowired private JdbcTemplate jdbcTemplate; public List<Map<String, Object>> getAllUsers() { String sql = "SELECT * FROM users"; return jdbcTemplate.queryForList(sql); } } ``` 如果配置正确,执行该方法时会在控制台看到类似以下的输出: ``` DEBUG o.s.jdbc.core.JdbcTemplate - Executing SQL query [SELECT * FROM users] ``` --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值