Spring-boot with spring-mybatis - 如何强制它记录所有SQL查询

2022-09-03 18:22:31

我有一个简单的spring-boot-mybatis应用程序(请记住,请)。Mybatis仅在发生故障时才记录SQL查询(在excepions上)。请告诉我,如何强制它记录所有SQL查询到控制台?

目前我正在使用记录器(由 自动配置)。
我发现这个链接:http://www.mybatis.org/mybatis-3/logging.html
但是我没有设法遵循它。首先,所有配置都显示为 ,我不确定如果我正确理解:在 中配置是否足够?slf4jspring-bootlog4japplication.properties

提前致谢


答案 1

Spring boot 使用 logback 作为 Slf4j 的默认日志记录提供程序。Ibatis 内部日志工厂将 SLF4j 作为首选记录器加载。您所要做的就是配置您的弹簧引导记录器以发布ibatis映射器的日志消息。

在引导应用程序属性中添加以下行。

logging.level.org.springframework=WARN
logging.level.com.spring.ibatis.UserMapper=DEBUG
logging.file=logs/spring-boot-logging.log

第二行是定义具有 DEBUG 日志级别的 ibatis 映射器的日志记录条目的位置。 是包,并且是示例映射器。com.spring.ibatisUserMapper

以下日志将开始出现在控制台和 spring-boot-logging 文件中。这些是从类和方法生成的日志消息。saveUserfindByNameApplicationTest

2016-12-19 22:07:06.358  INFO 7248 --- [main] com.spring.ibatis.ApplicationTest        : Started ApplicationTest in 3.048 seconds (JVM running for 4.209)
2016-12-19 22:07:06.424 DEBUG 7248 --- [main] com.spring.ibatis.UserMapper.saveUser    : ==>  Preparing: insert into users(name) values(?) 
2016-12-19 22:07:06.444 DEBUG 7248 --- [main] com.spring.ibatis.UserMapper.saveUser    : ==> Parameters: ibatis(String)
2016-12-19 22:07:06.445 DEBUG 7248 --- [main] com.spring.ibatis.UserMapper.saveUser    : <==    Updates: 1
2016-12-19 22:07:06.457 DEBUG 7248 --- [main] com.spring.ibatis.UserMapper.findByName  : ==>  Preparing: select name from users WHERE name=? 
2016-12-19 22:07:06.470 DEBUG 7248 --- [main]  com.spring.ibatis.UserMapper.findByName  : ==> Parameters: ibatis(String)
2016-12-19 22:07:06.504 DEBUG 7248 --- [main]  com.spring.ibatis.UserMapper.findByName  : <==      Total: 1

您当然可以配置所需的任何记录器选择。如果您需要,我可以轻松地为任何其他记录器添加一个示例。

您可以在 https://github.com/saagar2000/ibatis 找到带有 Junit 测试用例的完整代码


答案 2

SLF4J不会取代log4j,它们一起工作。它从您的库/应用程序中删除对log4j的依赖。

https://softwareengineering.stackexchange.com/questions/108683/slf4j-vs-log4j-which-one-to-prefer

因此,如果您使用的是slf4j,则可以使用log4j配置,只要您在slf4j下使用log4j即可。

以下是我发现的一个指南,其中讨论了将slf4j与log4j记录器一起使用:http://saltnlight5.blogspot.ca/2013/08/how-to-configure-slf4j-with-different.html

从本质上讲,您只需要在此处创建一个属性文件:并将其配置为与链接中的文件相同。正如您的链接所说:src/main/resources/log4j.properties

...为此,SQL语句在调试级别记录(JDK日志记录中的FINE),并在TRACE级别(在JDK日志记录中为FINER)...

因此,请确保已在属性文件中进行了设置。log4j.logger.org.mybatis.example=DEBUG


推荐