

Springboot Druid 使用Slf4j输出可执行SQL
source link: https://www.raye.wang/springboot-druid-ji-yu-logshu-chu-ke-zhi-xing-sql/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Springboot Druid 使用Slf4j输出可执行SQL
28 六月 2019 5:41:22 下午在开发中,为了数据安全,所有SQL语句肯定是用占位符的,但是在实际开发中,为了方便追踪问题,经常需要查看具体执行的SQL语句内容,而用了占位符之后,每次真实执行的语句只能靠自己根据参数拼接出来,耗时耗力,所以需要一个方法输出每次执行的SQL语句,并且还是有参数的(替换了占位符),而Druid就支持此功能(Druid的主要功能可不是这个),所以此文主要讲Springboot环境下使用Druid输出可执行SQL,并且是使用的Springboot的默认日志配置格式,因为一旦修改了Springboot的日志配置格式,输出来的日志一般是没有颜色区分的,如下:


当然也可以自己配置出来颜色,只是我个人觉得springboot的默认配置已经很好看了,不用再配置了
当然Springboot配置Druid输出可执行的SQL文档太多了,只是他们都需要配置日志本身,也就是配置后日志输出的样子我不喜欢,所以各种研究后,才有了此文(之前百度是真没有找到用默认配置输出的方法)
Druid 介绍
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。以上是官方的自我介绍,也侧面说明了Druid是一个功能强大,自带监控扩展的数据库连接池,具体想了解Druid的话建议去全球最大的同性交友基地了解
使用Springboot默认的日志配置文件,意味着就没有log4j.properties之类的文件给我们配置了,那就只有在application.yml或者application.properties中配置springboot告诉它我们哪些地方需要打印日志,需要打印什么级别的日志
首先要配置连接池为Druid
spring:
application:
name: admin-managee
datasource:
druid:
url: jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=CTT
username: test
password: test
driver-class-name: com.mysql.cj.jdbc.Driver
使用Druid连接池跟之前不同的是多了一层druid,而其他的配置则是一样的
而之前用代码或者xml配置druid都在druid这个层级下,包括输出可执行SQL如下:
filters: stat,wall,stat,slf4j,default
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
login-username: Raye
login-password: 123456
filter:
slf4j:
enabled: true
statement-create-after-log-enabled: false
statement-log-enabled: false
statement-executable-sql-log-enable: true
statement-log-error-enabled: true
result-set-log-enabled: false
其中只要statement-executable-sql-log-enable配置为true,则可以输出可执行SQL,当然如果不想用slf4j输出日志,用log4j只需要吧slf4j替换成log4j即可,不过还是推荐使用slf4j,至于为什么使用slf4j,百度很多人都已经说的很好了,另外druid的其他配置说明也请移步专业的druid文章,他们写的更加详细
完整配置如下:
spring:
application:
name: admin-managee
datasource:
druid:
url: jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=CTT
username: test
password: test
driver-class-name: com.mysql.cj.jdbc.Driver
filters: stat,wall,stat,slf4j,default
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
login-username: test
login-password: 123456
filter:
slf4j:
enabled: true
statement-create-after-log-enabled: false
statement-log-enabled: false
statement-executable-sql-log-enable: true
statement-log-error-enabled: true
result-set-log-enabled: false
the end
Recommend
-
62
经常做线上问题排查的可能会有感受,由于日志打印一般是无序的,多线程下想要串行拿到一次请求中的相关日志简直是大海捞针。那么MDC是一种很好的解决办法。 SLF4J的MDC SLF4J 提供了MDC ( Mapped Diagnostic Contexts...
-
21
【前情提要】最近做了一个Springboot项目,但是最后需要打成WAR包在容器中部署,下面就简单记录一下。 壹、修改pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2...
-
9
Springboot Druid 自定义加密数据库密码 21 十二月 2020 3:01:14 下午开发过程中,配置的数据库密码通常是明文形式,这样首先第一个安全性不好(相对来说),不符合一个开发规范(如项目中不能出现明文账号密码),其实就是当出现特殊需求时,比如...
-
15
slf4j日志输出无法输出日志到控制台 ...
-
5
alibaba druid 在springboot start autoconfig下的bug 标签(空格分隔):druid springboot start autoconfig 发现、分析过程 最近在使用alibaba druid进行多数据源连接的时候无意中发现一个小bug,已经提交github is...
-
10
V2EX › Java 使用 @Slf4j 注解的方式需要修复 log4j 的漏洞吗? EarthChild ·...
-
9
涉及的知识点主要包括Maven的生命周期以及自定义插件,JDK提供关于jar包的工具类以及Springboot如何扩...
-
4
SpringBoot 整合druid 发表于 2018-09-05
-
5
网上搜了很多,没有发现正确的解决方案,大部分抄来抄去,这里直接给新版Druid 的解决方案! 需要明确两个事情 新版Druid 可以不用写单独的配置类 springboot application.yam文件中添加如下配置即可【在文章最后】...
-
3
slf4j、log4j2及logback使用 1、问题来源 之前看过关于slf4j、log4j2及logback的介绍,slf4j是门面,log4j2及logback是具体实现,仅使用slf4j门面是无法输出日志的。 本文采用jdk11
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK