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

新手上路,请多包涵

我有一个简单的 spring-boot-mybatis 应用程序(请记住)。 Mybatis 仅在失败(异常)的情况下记录 SQL 查询。请告诉我,如何强制它将所有 SQL 查询记录到控制台?

此时我正在使用 slf4j 记录器(由 spring-boot 自动配置)。

我找到这个链接: http ://www.mybatis.org/mybatis-3/logging.html

但是我没有设法遵循它。首先显示 log4j 的配置,我不确定我是否正确理解:在 application.properties 中配置是否足够?

提前致谢

原文由 user6023611 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 578
2 个回答

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

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

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

第二行是为 ibatis mapper 定义 DEBUG 日志级别的日志条目。 com.spring.ibatis 是包, UserMapper 是示例映射器。

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

 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 测试用例的完整代码

原文由 s7vr 发布,翻译遵循 CC BY-SA 3.0 许可协议

接受的答案对我来说不太适用(我猜 6 年内情况会发生变化!!)。我使用的是 YAML 而不是属性文件,并且通过 logback-spring.xml 配置了 logback。我有我认为等同于接受的答案但没有将 mybatis 日志记录发送到控制台日志。主要问题是我使用的是 DEBUG 级别,它似乎需要 TRACE( Mybatis 文档 向我指出了那个方向)。

如果有人使用 logback-spring.xml 来配置他们的日志记录,你应该看起来像这样:

 <configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <springProfile name="local">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
        <logger name="org.springframework" level="DEBUG" additivity="false">
            <appender-ref ref="CONSOLE"/>
        </logger>
        <logger name="com.mycompany" level="DEBUG" additivity="false">
            <appender-ref ref="CONSOLE"/>
        </logger>
        <!-- Important to have TRACE as the level, and the package where the mybatis logic is specified in the logger name-->
        <logger name="com.mycompany.myapp.dataaccess" level="TRACE" additivity="false">
            <appender-ref ref="CONSOLE"/>
        </logger>
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
</configuration>

原文由 B-Wieg 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题