在druid的jar中 , META-INF/druid-filter.properties中有其内置的filter , 内容如下:
druid.filters.default=.alibaba.druid.filter.stat.StatFilter
druid.filters.stat=.alibaba.druid.filter.stat.StatFilter
druid.filters.mergeStat=.alibaba.druid.filter.stat.MergeStatFilter
druid.filters.counter=.alibaba.druid.filter.stat.StatFilter
druid.filters.encoding=.alibaba.druid.filter.encoding.EncodingConvertFilter
druid.filters.log4j=.alibaba.druid.filter.logging.Log4jFilter
druid.filters.log4j2=.alibaba.druid.filter.logging.Log4j2Filter
druid.filters.slf4j=.alibaba.druid.filter.logging.Slf4jLogFilter
druid.filters.monlogging=.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.monLogging=.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.wall=.alibaba.druid.wall.WallFilter
druid.filters.config=.alibaba.druid.filter.config.ConfigFilter
druid.filters.haRandomValidator=.alibaba.druid.pool.ha.selector.RandomDataSourceValidateFilter
default、stat、wall等是filter的别名 , 可以在application.properties中可以通过spring.datasource.druid.filters属性指定别名来开启相应的filter , 也可以在Spring中通过属性注入方式来开启 , 接下来介绍一下比较常用的filter
在spring.datasource.druid.filters配置中包含stat , 代表开启监控统计信息 , 在上面内容中 , 我们已经看到包含执行次数、时间、最慢SQL等信息 。 也提到因为有的sql是非参数话的 , 这样会导致在监控页面有很多监控的sql都是一样的 , 只是参数不一样 , 我们这时候需要将合同sql配置打开;
只需要在application.properties增加配置:
#为监控开启SQL合并 , 将慢SQL的时间定为2毫秒 , 记录慢SQL日志
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2;druid.stat.logSlowSql=true
看一下运行结果:
1、下面2个语句在监控页面被合并了:
select * from user_info where id=1
select * from user_info where id=2
// 合并后的结果是:
SELECT * FROM user_info WHERE id = ?
2、超过2ms的语句 , 在监控页面红色展示出来
3、慢SQL在日志中会被体现出来
继承stat , 基本特性和stat是一样的 , 不做延伸
由于历史原因 , 一些数据库保存数据的时候使用了错误编码 , 需要做编码转换 。
可以用下面的方式开启:
spring.datasource.druid.filters=stat,encoding
#配置客户端的编码UTF-8 , 服务端的编码是ISO-8859-1 , 这样存在数据库中的乱码查询出来就不是乱码了 。
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2;druid.stat.logSlowSql=true;clientEncoding=UTF-8;serverEncoding=ISO-8859-1
Druid内置提供了四种LogFilter(Log4jFilter、Log4j2Filter、CommonsLogFilter、Slf4jLogFilter) , 用于输出JDBC执行的日志
#这里使用log4j2为例
spring.datasource.druid.filters=stat,log4j2
#druid.log.conn记录连接、druid.log.stmt记录语句、druid.log.rs记录结果集、druid.log.stmt.executableSql记录可执行的SQL
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2;druid.stat.logSlowSql=true;druid.log.conn=true;druid.log.stmt=true;druid.log.rs=true;druid.log.stmt.executableSql=true
#为方便验证 , 我们开启以下loggerName为DEBUG
logging.level.druid.sql.Statement=DEBUG
logging.level.druid.sql.ResultSet=DEBUG
logging.level.druid.sql.Connection=DEBUG
- 怎么让水泥池里的鱼塘水清 水泥池塘水质怎么处理
- 什么花夏天开满池 什么花夏天开
- 别克君威蓄电池如何拆装
- 青鱼怎么做好吃 青鱼怎么养
- 鱼池水中有什么摆件吗 金钱龟风水摆件怎么放
- 混动可以拆电池当油车开吗
- 华晨中华v5钥匙电池怎么更换
- 别克英朗多久换电瓶 别克英朗蓄电池几年换
- 门口假山水池风水 南边水池假山风水
- 新捷达蓄电池怎么拆卸 捷达蓄电池怎么拆
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
