duruid 版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
项目使用的是 spring boot + jpa + druid , LOG是 logback , 在 未改造成微服务之前 并没有 出现 druid 打印 SQL内容的情况
后来改造成微服务之后,不久就出现了 下面的LOG:
内容:
<2013-07-10 13:29:29> <DEBUG> - {conn-10031} pool-connect
<2013-07-10 13:29:29> <DEBUG> - {conn-10031} pool-connect
<2013-07-10 13:29:29> <DEBUG> - {conn-10031} setAutoCommit false
<2013-07-10 13:29:29> <DEBUG> - {conn-10031, pstmt-20048} Types : []
<2013-07-10 13:29:29> <DEBUG> - {conn-10031, pstmt-20048} Types : []
<2013-07-10 13:29:29> <DEBUG> - {conn-10031, pstmt-20048, rs-50060} query executed. 94.01312 millis. select ... where 1=1
<2013-07-10 13:29:29> <DEBUG> - {conn-10031, pstmt-20048, rs-50060} query executed. 94.01312 millis. select ... where 1=1
...
<2013-07-10 13:29:29> <DEBUG> - {conn-10031, pstmt-20048, rs-50061} open
9> {conn-10031} commited
...
很是奇怪。
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d |-%p %class:%line - %m%n</pattern><!-- 此处设置输出格式 -->
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<appender name="fileLogger"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>/data/app/logs/cloudx/o2o-service.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/data/app/logs/cloudx/o2o-service-%d-%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 日志文件的最多存储64MB -->
<maxFileSize>64 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d |-%p %class:%line - %m%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<logger name="com.newpearl" level="DEBUG">
<appender-ref ref="fileLogger"/>
</logger>
</configuration>
日志配置打印信息只是 打印 info 级别的信息啊, 怎么 打印了 druid 的 sql log 到控制台了?
druid 配置 的 过滤器是:
filters: stat,wall,log4j
配置了 log4j 正常应该不会有效果啊。
最终解决
参考 logback 配置 druid : https://blog.csdn.net/qq_42145871/article/details/90704632
将 过滤器 改为:
filters: stat,wall,slf4j
即可修复 上面的出现的异常了。
因为 改造成了 微服务后, 某些包依赖进去了 log4j 的 包,
然后 配置了 log4j 的Filter , druid 就使用了 默认的 log4j 的配置,就将内容都 打印到了 控制台
ali druid 的 文档参考
因为druid 给到了 Apache ,但是 Apache的 druid 表示完全看不懂了,完全不一样了。
这里 附上 参考文档 地址
druid 的 https://www.bookstack.cn/read/Druid/2fa0c5cdf8a9e77e.md
GitHub : https://github.com/alibaba/druid/wiki
来源:oschina
链接:https://my.oschina.net/ouminzy/blog/3207006