1、引言
其實Druid的內置了log4jdbc來顯示SQL語句,雖然顯示效果不如原生的log4jdbc效果好,可是由於內置因此不須要其餘更多的配置。
2、使用
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寫入進去。
3、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