Druid 整合 Spring Boot (二) 日志篇

上一篇描述了Druid整合Spring Boot时遇到的一些问题, 以及推荐的一些配置, 这篇则主要讲Druid的日志

日志篇

Druid中使用log4j2进行日志输出

在开发环境调试代码,往往需要打印执行的SQL语句来判断SQL语句是否符合预期,尤其是我们的SQL语句使用了较多的标签时,只有真正的执行到了标签解析器后,才能生成最终的SQL语句;当遇到SQL语句看似解析正常但是执行的时候却报错,在这个时候如果SQL日志没有打印,将会是非常头疼的。

  1. 添加pom版本依赖(注意此处需要logging依赖, 原因是默认使用了Slf4j + Logback 进行日志记录)
<!--Spring-boot中去掉logback的依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!--log4j2 日志-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
  1. 添加 Druid filter配置
spring:
    datasource:
        druid:
            filters: stat,slf4j
            # filter 配置 (此部分官网没有详细说明 故有错误请谅解)
            filter:
                slf4j:
                    enabled: true
                    # 不显示创建语句之前和执行完成之后的日志 (无论开启与否都不会放到sql文件中, 此处的配置更多是优化debug的输出,避免大量无意义的日志被记录)
                    statement-create-after-log-enabled: false
                    statement-close-after-log-enabled: false
                    # 不显示返回结果之前和之后的日志
                    result-set-open-after-log-enabled: false
                    result-set-close-after-log-enabled: false
                    # 以下是关闭断开连接的日志显示
                    connection-close-after-log-enabled: true
                    connection-connect-after-log-enabled: false
                    connection-connect-before-log-enabled: false
  1. log4j2.xml 日志配置 (如resources下无此文件自行新建)

运行项目即可,会自动在项目下创建日志文件夹
image.png
image.png

MyBatis 日志打印 (占坑)

如果使用了MyBatis作为持久层框架, 则可以使用MyBatis的日志输出
需要关闭Druid控制台输出才可以使用MyBatis的日志输出 (关闭输出后日志文件仍然会记录)

“`yml
# 此配置只做控制台的日志输出, 如需保存日志 后续再开一个坑
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
“`

其他

项目源码: druid-spring-boot-starter

参考链接:
Druid中使用log4j2进行日志输出
SpringBoot之Logging

发表评论

您的电子邮箱地址不会被公开。