您的位置:首页 > 产品设计 > UI/UE

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

2017-03-20 23:54 197 查看

一、引言

其实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>

[/code]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>

[/code]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>

[/code]其中需要特别注意41行之后的代码,表示是否显示sql语句和结果,如果不想显示结果,可以在第一步中将resultSetLogEnabled 改为false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐