Druid搭配log4j2输出SQL语句和结果

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
相关文章
相关标签/搜索