Druid搭配log4j2输出SQL语句和结果
一、引言
其实Druid的内置了log4jdbc来显示SQL语句,虽然显示效果不如原生的log4jdbc效果好,但是因为内置所以不需要其他更多的配置。
二、使用
1. 创建基于druid的logger
<bean id="log-filter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter"><property name="connectionLogEnabled" value="false"/><property name="statementLogEnabled" value="false"/><property name="resultSetLogEnabled" value="true"/><property name="statementExecutableSqlLogEnable" value="true"/></bean>
a. resultSetLogEnabled表示是否显示结果集。
b. statementExecutableSqlLogEnable 表示是否显示SQL语句。
2. 在 DruidDataSource中配置
<!-- 数据连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">.....<property name="filters" value="stat,wall"/>......<property name="proxyFilters"><list><ref bean="log-filter"/></list></property></bean>
proxyFilters是代理filter的意思,将我们在第一步创建的log-filter写入进去。
三、log4j2中的设置
<?xml version="1.0" encoding="UTF-8"?><!-- Log4j 2.x 配置文件。每30秒自动检查和应用配置文件的更新; --><configuration status="warn" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd"><Properties><Property name="logdir">${sys:catalina.base}/logs</Property></Properties><appenders><!-- 输出到控制台 --><console name="Console" target="SYSTEM_OUT"><!-- 需要记录的级别 --><!-- <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> --><PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/></console><!-- 输出到文件,按天或者超过80MB分割 --><rollingFile name="RollingFile" fileName="conerstone.log"filePattern="${logdir}/logs/$${date:yyyy-MM}/xjj-%d{yyyy-MM-dd}-%i.log.gz"><!-- 需要记录的级别 --><!-- <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> --><PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/><policies><onStartupTriggeringPolicy/><timeBasedTriggeringPolicy/><sizeBasedTriggeringPolicy size="1 MB"/></policies></rollingFile></appenders><loggers><!-- 全局配置 --><root level="info"><appenderRef ref="Console"/><appenderRef ref="RollingFile"/></root><logger name="org.springframework.web" level="debug" additivity="false"><appenderRef ref="Console"/></logger><logger name="com.mc.core.service" level="debug" additivity="false"><appender-ref ref="Console"/></logger><!-- druid配置 --><logger name="druid.sql.Statement" level="debug" additivity="false"><appender-ref ref="Console"/></logger><logger name="druid.sql.ResultSet" level="debug" additivity="false"><appender-ref ref="Console"/></logger></loggers></configuration>
其中需要特别注意41行之后的代码,表示是否显示sql语句和结果,如果不想显示结果,可以在第一步中将resultSetLogEnabled 改为false
Doing is better than nothing

浙公网安备 33010602011771号